0

カスタム 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 など)。

4

2 に答える 2

0

コードが不完全なようです。複数選択コンボ ボックスを実装することが目的の場合は、SelectedItems プロパティを定義するだけでなく、項目が選択/選択解除されたときに値を入力する必要があります。

約、

ViewModel プロパティに変更がありません

このプロパティを View からも更新 (SetValue) していますか? それとも逆ですか?

于 2014-03-09T08:43:16.140 に答える