如何通过依赖属性更改wpf自定义控件中的内部元素?

时间:2012-03-16 15:11:14

标签: wpf

假设您有一个具有两个形状的自定义控件,并且您希望根据依赖项属性的符号更改一个形状的颜色,该属性将是数字。

我想XAML的解决方案是编写转换器函数并将形状绑定到该代码。

这是捕获 - 我想通过代码完成它,而不是通过XAML绑定。

依赖属性是静态的,我很难访问构成控件的任何私有元素。

我可以创建一个标准的.net get / set属性而不是依赖属性并按这样做吗?我尝试使用布尔值,并且设计时的属性窗格将不允许我取消选中布尔值,所以我认为这不是最佳实践。

1 个答案:

答案 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}"