我正在WPF項目上工作。我創建了一個包含組合框的用戶控件;它們表示布爾值(True或False)。我爲我的用戶控件註冊一個DependencyProperty
Value
。WPF DependencyProperty和數據綁定
每當組合框選擇被更改,我將更新Value
屬性,並且當Value
屬性更新時,我將更新組合框。
但我在MVVM中使用我的usercontrol時發現了這個問題。我將Value
屬性與我的viewModel中的IsEnable
屬性綁定。我將綁定模式設置爲TwoWay
綁定。但是當我改變組合框中的選擇時,IsEnable
屬性從未設置。
我的用戶:
public bool Value
{
get { return (bool)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(bool),
typeof(BooleanComboBox),
new UIPropertyMetadata(true, OnValuePropertyChanged));
private void Cmb_Selection_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cmb = sender as ComboBox;
object selectedValue = cmb.SelectedValue;
if (selectedValue == null)
{
this.Value = false;
}
else
{
if (selectedValue.GetType() == typeof(bool))
{
this.Value = (bool)selectedValue;
}
else
{
this.Value = false;
}
}
if (this.OnValueChange != null)
this.OnValueChange(this, this.Value);
}
private static void OnValuePropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
BooleanComboBox self = sender as BooleanComboBox;
self.Cmb_Selection.SelectedValue = (bool)args.NewValue;
}
在窗口,在這裏我把我的用戶(我已經設置UserControl的DataContext的,以我的視圖模型):
<tibsExtControl:BooleanComboBox Grid.Row="4"
Grid.Column="1"
VerticalAlignment="Center"
Value="{Binding Path=NewTemporaryZone.IsEnable,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
x:Name="Cmb_AllowNonLBILogon"/>
在我的模型類,我宣佈一個IsEnable
屬性:
private bool _isEnable;
public bool IsEnable
{
get { return _isEnable; }
set
{
_isEnable= value;
OnPropertyChanged("IsEnable");
}
}
這是怎麼回事與我的用戶控件。我想念什麼?請幫幫我。 T.T