我有一个简单的usercontrol(DoubleRadioControl2),由2个单选按钮组成。我对这个UC有一个Dep Prop :(布尔?)IsOuiChecked:
非常简单。
Edit->Preferences
两个无线电之间的逻辑:
private static readonly DependencyProperty IsOuiCheckedProperty = DependencyProperty.Register("IsOuiChecked", typeof(bool?), typeof(DoubleRadioControl2), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public bool? IsOuiChecked
{
get
{
return (bool)GetValue(IsOuiCheckedProperty);
}
set
{
SetValue(IsOuiCheckedProperty, value);
if (value == null)
{
RadioYes.IsChecked = false;
RadioNo.IsChecked = false;
}
else
{
RadioYes.IsChecked = (bool) value;
RadioNo.IsChecked = !(bool) value;
}
}
}
当我将此UC绑定到我的viewmodel时,如果我点击我的无线电时更新了支柱。但是当我在我的视图模型的代码中设置值时,它不会更新我的无线电。
在我的viewmodel中:
private void OptDecompteConfnOui_Click(object sender, RoutedEventArgs e)
{
IsOuiChecked = true;
}
private void OptDecompteConfnNon_Click(object sender, RoutedEventArgs e)
{
IsOuiChecked = false;
}
TwoWay绑定不起作用。
答案 0 :(得分:3)
依赖项属性的getter和setter仅存在于您的(程序员)的便利性中。 WPF本身不会调用它们,而是直接设置属性。
您需要将处理程序附加到已更改的属性事件。使用其中一个FrameworkPropertyMetadata
构造函数,其中PropertyChangedCallback 。你的getter和setter逻辑需要在那里而不是在属性内处理。
答案 1 :(得分:1)
如果您使用的是MVVM,则应调用OnPropertyChanged
答案 2 :(得分:0)