cuốn sách gpt4 ai đã làm

android — Tuyên truyền giá trị mặc định của DependencyProperty

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 21:11:31 28 4
mua khóa gpt4 Nike

Tôi có UserControl WPF với ViewModel:








UserControl này có DependencyProperty phải được truyền tới ViewModel:

công khai tĩnh chỉ đọc DependencyProperty DurationProperty = 
DependencyProperty.Register("Thời lượng", typeof(TimeSpan),
typeof(MyUserControl), FrameworkPropertyMetadata mới(TimeSpan.FromHour(1), OnDurationChanged ));

thời gian công khai Khoảng thời gian
{
nhận được { return (TimeSpan)GetValue(DurationProperty }
đặt { SetValue(DurationProperty, value }
}

khoảng trống tĩnh riêng tư OnDurationChanged(nguồn DependencyObject,
DependencyPropertyChangedEventArgs e)
{
Kiểm soát MyUserControl = nguồn là MyUserControl;
Thời lượng TimeSpan = (TimeSpan)e.NewValue;
control.UxRootContainer.SetDuration(thời lượng);
}

Điều này hoạt động tốt ngoại trừ chúng tôi sẽ không tham gia OnDurationĐã thay đổi Giá trị mặc định được nhận trong sự kiện này.

Tôi biết tôi có thể tự gọi phương thức này trong hàm tạo, đặt thời lượng mặc định thành một hằng số, nhưng:

  • Tôi phải tạo một hằng số cho mỗi DependencyProperty
  • Ngay cả khi cuối cùng tôi không sử dụng giá trị mặc định, tôi vẫn phải gọi nó

Bất kỳ đề xuất hay nào về cách truyền giá trị mặc định tới ViewModel, miễn là giá trị mặc định là giá trị cuối cùng được sử dụng (không phải tập hợp giá trị khác).

câu trả lời hay nhất

Tôi quyết định viết một câu trả lời (chỉ trong trường hợp tôi sai :).

Trong trường hợp cụ thể, bạn đang tạoĐiều khiển tùy chỉnh, có nghĩa là một điều khiển đơn giản trong các Chế độ xem khác. Hai điểm:

  • ViewModel không được tạo;
  • Không đặt điều khiển nàyBối cảnh dữ liệu.

Trong trường hợp này, ViewModel không phục vụ mục đích nào: không có mô hình cơ bản nào để trừu tượng hóa và không có gì (không phải Chế độ xem, không phải ViewModel) sẽ được sử dụng lại. Không có ViewModel nào tồn tại và giá trị mặc định đã là giá trị mặc định của thuộc tính phụ thuộc = vấn đề đã được giải quyết.

Đối với Bối cảnh dữ liệu: Nếu bạn cố gắng sử dụng điều khiển này trong danh sách để liên kết các thuộc tính mục với nó, bạn sẽ luôn phải đi qua vùng chứa chính Bối cảnh dữ liệu Tham chiếu nó (vì điều khiển có phần ghi đè và ràng buộc của nó) "{Văn bản ràng buộc}" Dự án này sẽ không được tham khảo Chữ thuộc tính, nhưng thay vào đó hãy tham khảo thuộc tính ViewModel Text của điều khiển, bạn sẽ phải làm điều gì đó như "{Binding DataContext.Text, InteractiveSource={RelativeSource FindAncestor, AncestorType=Grid}}"). Điều này không bao giờ đúng trong bất kỳ thiết kế nào.

Về C# - truyền bá giá trị mặc định DependencyProperty, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/37318809/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress