我的自定义用户控件中有 MultiSelectComboBox 用户控件。我想将字典类型的 SelectedItems 依赖属性(来自上面的 MSCB)绑定到我的任何 ViewModel 属性...
*MSBC 表示 --> MultiSelectComboBox UserControl !!!!!
MSCB 的代码隐藏:定义 DP:
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register("SelectedItems", typeof(Dictionary<string, object>), typeof (MultiSelectComboBox), new FrameworkPropertyMetadata(null,
new PropertyChangedCallback(MultiSelectComboBox.OnSelectedItemsChanged)));
在 MSCB 中定义 SelectedItems 属性:
public Dictionary<string, object> SelectedItems
{
get { return (Dictionary<string, object>)GetValue(SelectedItemsProperty); }
set
{
SetValue(SelectedItemsProperty, value);
}
}
private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MultiSelectComboBox ctrl = (MultiSelectComboBox)d;
ctrl.SelectNodes();
ctrl.SetText();
}
My Custum UserControl 的 Xaml:在 Xaml 中定义 MSCB:
<MultiSelectComboBox:MultiSelectComboBox x:Name="WorkDay"
SelectedItems="{Binding SelectedItemsInViewModel}"
ItemsSource="{Binding WorkDays,Converter={StaticResource DataConverter}}"/>
在我的 ViewModel 类中:
private Dictionary<string, object> si= new Dictionary<string, object>();
public Dictionary<string, object> SelectedItemsInViewModel
{
get { return si; }
set
{
si = value;
OnPropertyChanged("SelectedItemsInViewModel");
}
}
看起来 OnEventChanged(MSBC 内的 DProperty 的)仅在第一次初始化时触发,然后停止触发。我的 ViewModel 属性没有任何变化。我已将数据上下文设置为指向我的 ViewModel 类,并且此 CustomControl 中的其他绑定工作正常(如 TextBoxes)。