0

私は概念として MVVM にかなり慣れていません。現在、TabControl の選択されたインデックスを変更すると、私が持っている ComboBox の項目ソースが変更されるように設定しようとしています。現在、次のように設定しています。

    public int SelectedTabIndex
    {
        get
        {
            return _selectedTabIndex;
        }
        set
        {
            _selectedTabIndex = value;
            if (_selectedTabIndex == 0)
            {
                _readOnlyArray = ReadOnlyArrays.ReadOnlyColumnArrays.LoanerItemsSelect;
            }
            else if (_selectedTabIndex == 1)
            {
                _readOnlyArray = ReadOnlyArrays.ReadOnlyColumnArrays.CustomerSelect;
            }
            else if (_selectedTabIndex == 2)
            {
                _readOnlyArray = ReadOnlyArrays.ReadOnlyColumnArrays.JobSelect;
            }
        }

次の TabControl にバインドされます。

SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay}"

私もこれを持っています:

    public string[] ReadOnlyArray 
    {
        get { return _readOnlyArray; }

        set { _readOnlyArray = value;}
    }

次のように ComboBox にバインドされます。

ItemsSource="{Binding readOnlyArray, Mode=TwoWay}"

私はこれを完全に間違っている可能性が高いことを知っていますが、TabControl のタブ インデックスが変更されるたびに ComboBox の項目ソースを更新したいと考えています。

4

1 に答える 1

1

変更後に ReadOnlyArray が変更されていることをインターフェイスに通知する必要がありますSelectedTabIndex。ビュー モデルが を実装すると仮定すると、INotifyPropertyChanged適切なイベント ハンドラーを起動する必要があります。

    set
    {
        _selectedTabIndex = value;
        if (_selectedTabIndex == 0)
        {
            _readOnlyArray = ReadOnlyArrays.ReadOnlyColumnArrays.LoanerItemsSelect;
        }
        else if (_selectedTabIndex == 1)
        {
            _readOnlyArray = ReadOnlyArrays.ReadOnlyColumnArrays.CustomerSelect;
        }
        else if (_selectedTabIndex == 2)
        {
            _readOnlyArray = ReadOnlyArrays.ReadOnlyColumnArrays.JobSelect;
        }

        //Your helper method from base class calling          
        // INotifyPropertyChanged.PropertyChanged event
        this.RaisePropertyChanged("ReadOnlyArray");
    }

それでもうまくいかない場合は、VisualStudio の出力ウィンドウでバインディング エラーがないか確認してください。

于 2013-06-21T16:57:26.817 に答える