我需要将用户控件的双向属性绑定到包含用户控件的属性。我还需要从子代码中为该属性设置默认值(不能通过XAML标记轻松完成)。
如果我从子构造函数调用我的代码,则会在父级中设置该值,但不会触发更改回调例程(我的理解是父级没有在创建孩子时尚未存在。
我的当前解决方法是捕获子项的已加载事件并从处理程序中调用代码。如果多次调用Loaded,我需要设置一个标志来仅在第一次设置属性。 我不喜欢这种方式,但我不知道是否有可以使用的单击事件,或者是否可以这样做。根据您的经验提供反馈意见吗?
答案 0 :(得分:1)
对于default value使用DependencyProperty并传入包含默认值的FrameworkPropertyMetadata 对象,例如
public static readonly DependencyProperty ProductNameProperty =
DependencyProperty.Register(
"ProductName",
typeof(string),
typeof(ProductTextBox),
new FrameworkPropertyMetadata(null, // Default Value
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(ChangeProductName)) );
如果每个实例的默认值是可变的,那么可能是
的组合SetValue(ProductNameProperty, value_required);
PropertyChanged(this, new PropertyChangedEventArgs("ProductName"));
可能在构造函数中,或者如果在构造函数中不起作用,则在加载的事件中发送PropertyChanged。我实际上没有试过这个......