我在我的自定義控件中有一個布爾屬性。我有一個屬性更改回調方法,其中我重新設置標誌值視圖更新屬性,即視圖將設置屬性值爲true,並在自定義控件中我正在做一些處理,並將屬性值設置爲false 。當我將自定義控件中的屬性值更新爲false時,它不會更新到視圖端。MVVM - 自動重置標誌實現
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;
}
是否有人可以幫助我瞭解爲什麼值沒有反映在視圖模型,當我在定製控件中設置的布爾標誌爲假?
沒有好的[MCVE]認爲可靠地再現你的問題,這是不可能的。但是,WPF通常在一個方向禁用綁定更新,當它處於另一個方向的更新處理過程中。目前還不清楚是什麼引導了你這個設計,但我懷疑這是管理你想要做的事情的最好方法。你應該發佈一個問題,詢問這個更廣泛的問題,而不是這個具體的實現。請參閱[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –
只是一個旁註:你不需要'ViewModel'中的'DependencyProperty',只是一個「正常」的「財產」。 –
@PeterDuniho感謝您的建議。我會更新這個問題,否則我會在不同的線程中創建新的問題。 – swamy