假设您有一个具有两个形状的自定义控件,并且您希望根据依赖属性的符号更改其中一个形状的颜色,该符号应该是数值。
我想XAML的解决方案是编写一个转换函数,并将形状绑定到该代码。
这里有个问题--我想通过代码来实现,而不是通过XAML绑定。
依赖属性是静态的,我很难访问组成控件的任何私有元素。
我可以只创建一个标准的.net get/set属性而不是dependency属性,然后这样做吗?我尝试过使用布尔值执行此操作,但设计时的属性窗格不允许取消选中布尔值,因此我认为这不是最佳实践。
发布于 2012-03-17 05:03:13
关键是添加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中的某个地方,你可以绑定..then:
<MyControl MYCustomDpProp={Binding MyModel.SomeProperty}"
https://stackoverflow.com/questions/9739798
复制相似问题