假设您有一个具有两个形状的自定义控件,并且您希望根据依赖项属性的符号更改一个形状的颜色,该属性将是数字。
我想XAML的解决方案是编写转换器函数并将形状绑定到该代码。
这是捕获 - 我想通过代码完成它,而不是通过XAML绑定。
依赖属性是静态的,我很难访问构成控件的任何私有元素。
我可以创建一个标准的.net get / set属性而不是依赖属性并按这样做吗?我尝试使用布尔值,并且设计时的属性窗格将不允许我取消选中布尔值,所以我认为这不是最佳实践。
答案 0 :(得分:0)
关键是添加PropertyChangedCallback,看看lambda表达式,你打电话 通过您提供的实例的私有方法:
控件后面的代码(让我们称之为myControl)
public static readonly DependencyProperty IntegerValueProperty =
DependencyProperty.Register("MYCustomDpProp", typeof(int?), typeof(myControl),
new FrameworkPropertyMetadata(
null,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
(o, e) => ((MyControl)o).OnMYCustomDpPropChanged()));
private void OnMYCustomDpPropChanged()
{
//do you logic here
}
..然后在XAML的某处你可以绑定它:
<MyControl MYCustomDpProp={Binding MyModel.SomeProperty}"