カスタム UserControl 内に MultiSelectComboBox UserControl があります。ディクショナリのタイプである SelectedItems 依存関係プロパティ (上記の MSCB から) を My 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 Custom 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");
}
}
(MSBC 内の DProperty の) OnEventChanged が最初の初期化のためにのみ起動され、その後起動を停止するように見えます。ViewModel プロパティに変更がありません。ViewModel クラスを指すようにデータ コンテキストを設定し、この CustomControl 内の他のバインディングは正常に動作しています (TextBoxes など)。