我的自定义控件中有一个布尔属性。我有一个属性更改回调方法,其中每当视图更新属性时我重置标志值,即视图将属性值设置为true并在自定义控件中我做一些处理和设置属性价值回归虚假。当我将自定义控件中的属性值更新为false时,它未更新到视图端。
CustomControl:
public bool ResetFlag
{
get { return (bool)GetValue(ResetFlagProperty); }
set { SetValue(ResetFlagProperty, value); }
}
public static readonly DependencyProperty ResetFlagProperty = DependencyProperty.Register("ResetFlag", typeof(bool), typeof(ExtendedTextBox), new PropertyMetadata(false, OnResetFlagChanged));
private static void OnResetFlagChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var extendedTextBox= d as ExtendedTextBox;
if (extendedTextBox== null)
{
return;
}
if ((bool)e.NewValue)
{
//Do processing here
extendedTextBox.ResetFlag = false;
}
}
视图模型:
<StackPanel>
<local:ExtendedTextBox ResetFlag="{Binding ResetValue,Mode=TwoWay}"/>
<Button Content="ResetFlag" Click="Button_Click"/>
</StackPanel>
public bool ResetValue
{
get { return (bool)GetValue(ResetValueProperty); }
set { SetValue(ResetValueProperty, value); }
}
public static readonly DependencyProperty ResetValueProperty = DependencyProperty.Register("ResetValue", typeof(bool), typeof(MainWindow), new PropertyMetadata(false));
private void Button_Click(object sender, RoutedEventArgs e)
{
ResetValue = true;
}
当我在自定义控件中将boolean标志设置为false时,是否有人可以帮助我理解为什么值不会反映在viewmodel中?
答案 0 :(得分:0)
Wy您在ResetValue
课程中定义了另一个MainWindow
属性吗?您应该设置ResetFlag
控件的ExtendedTextBox
属性。
在XAML标记中为控件提供x:Name
:
<local:ExtendedTextBox x:Name="ctrl" ResetFlag="{Binding ResetValue,Mode=TwoWay}"/>
...并在Button_Click
事件处理程序中设置控件的属性:
private void Button_Click(object sender, RoutedEventArgs e)
{
ctrl.ResetValue = true;
}