WPF 프로젝트에서 작업 중입니다. 나는 combobox를 포함하는 usercontrol을 만든다; 부울 값 (True 또는 False)을 나타내는 그리고 내 usercontrol에 DependencyProperty
Value
을 등록합니다.WPF DependencyProperty 및 데이터 바인딩
콤보 박스 선택이 변경 될 때마다 Value
속성을 업데이트하고 Value
속성이 업데이트 될 때마다 콤보 상자를 업데이트합니다.
하지만 MVVM에서 내 usercontrol을 사용할 때 문제가 발견되었습니다. 내속성을 내 012Model 내 IsEnable
속성으로 바인딩합니다. 바인딩 모드를 TwoWay
바인딩으로 설정했습니다. 그러나 comboBox에서 선택을 변경하면 IsEnable
속성이 설정되지 않습니다.
내 UserControl을 : 내 UserControl을 배치 창에서
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을의 데이터 컨텍스트를 설정) : 내가 IsEnable
속성을 선언 내 모델 클래스에서
<tibsExtControl:BooleanComboBox Grid.Row="4"
Grid.Column="1"
VerticalAlignment="Center"
Value="{Binding Path=NewTemporaryZone.IsEnable,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
x:Name="Cmb_AllowNonLBILogon"/>
:
private bool _isEnable;
public bool IsEnable
{
get { return _isEnable; }
set
{
_isEnable= value;
OnPropertyChanged("IsEnable");
}
}
내 usercontrol에는 어떤 현상이 발생합니까? 나는 무엇인가 놓친다? 도와주세요. T.T