And*_*rke 5 data-binding wpf dependency-properties custom-controls
我有一个自定义控件,它有一个DependencyProperty MyAnimal - 我将ViewModel上的Animal属性绑定到MyAnimal DependencyProperty.
我在控件上粘贴了一个TextBox,所以我可以触发一个事件 - 每当我触发事件时MyAnimal属性已被设置 - 但是如果我在MyAnimal属性的Setter上放置一个断点,它永远不会被触发!
我想我错过了一些关于WPF依赖属性/绑定的基本知识?!
所以我的问题是,如果我不能使用Setter,我怎么能知道它何时被设置?如果我把如果我在InitializeComponent()之后放置一个断点,那么我看看是否有一个事件可以挂钩--DatabindingFinished或类似的?但看不出它会是什么......
有人可以帮忙吗?
谢谢,
安迪
public partial class ControlStrip
{
public ControlStrip()
{
InitializeComponent();
}
public Animal MyAnimal
{
get
{
return (Animal)GetValue(MyAnimalProperty);
}
set
{
SetValue(MyAnimalProperty, value);
}
}
public static readonly DependencyProperty MyAnimalProperty =
DependencyProperty.RegisterAttached("MyAnimal", typeof (Animal), typeof (ControlStrip));
private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
var myAnimal = MyAnimal;
MessageBox.Show(myAnimal.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
setter方法永远不会被运行时调用.它们直接转到DependencyProperty.您需要在调用RegisterAttached()时添加一个额外的参数.在那里你可以添加一个PropertyChangedCallback.
以下是一些示例代码:
public static readonly DependencyProperty MyAnimalProperty =
DependencyProperty.RegisterAttached("MyAnimal", typeof (Animal), typeof (ControlStrip), new PropertyMetadata(AnimalChanged));
private static void AnimalChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
// Do work here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |