Tôi có thể đang tìm kiếm theo cách này sai, nhưng:Nhận kết quả của Mã số
có cách nào để nhận giá trị kết quả của một ràng buộc qua mã không?
Có lẽ một cái gì đó rõ ràng rõ ràng, nhưng tôi không thể tìm thấy nó.
Tôi có thể đang tìm kiếm theo cách này sai, nhưng:Nhận kết quả của Mã số
có cách nào để nhận giá trị kết quả của một ràng buộc qua mã không?
Có lẽ một cái gì đó rõ ràng rõ ràng, nhưng tôi không thể tìm thấy nó.
Bạn chỉ cần gọi phương thức ràng buộc
CHỈNH SỬA: thực sự, điều đó không đúng ... ProvideValue
. Phần khó khăn là bạn cần phải vượt qua
IServiceProvider
hợp lệ cho phương thức ...
ProvideValue
trả về một BindingExpression
, không phải giá trị của thuộc tính bị ràng buộc.
Bạn có thể sử dụng các thủ thuật sau đây:
class DummyDO : DependencyObject
{
public object Value
{
get { return (object)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(object), typeof(DummyDO), new UIPropertyMetadata(null));
}
public object EvalBinding(Binding b)
{
DummyDO d = new DummyDO();
BindingOperations.SetBinding(d, DummyDO.ValueProperty, b);
return d.Value;
}
...
Binding b = new Binding("Foo.Bar.Baz") { Source = dataContext };
object value = EvalBinding(b);
Không rất thanh lịch, nhưng nó hoạt động ...
Ah vâng, đó là nó. Cảm ơn. – Inferis
Tôi đang cố gắng làm một cái gì đó tương tự, nhưng chạy vào các vấn đề, tôi nghĩ bởi vì tôi cần phải sử dụng RelativeSource. Bất kỳ ý tưởng làm thế nào để tránh người thân được đánh giá liên quan đến DummyDO thay vì mục tiêu tiềm ẩn trong bối cảnh ràng buộc? – tobriand
@tobriand, tôi không chắc mình hiểu ... Trường hợp sử dụng của bạn là gì? –