MVVM TabControl更新组合框
本文关键字:组合 更新 TabControl MVVM | 更新日期: 2023-09-27 18:19:20
我对MVVM作为一个概念很陌生,我目前正在尝试设置一些东西,以便改变TabControl的选定索引将改变我拥有的组合框的项目源。目前我的设置如下:
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}"
我知道很可能我这样做是完全错误的,但我希望ComboBox的项目源更新每当TabControl的标签索引被改变
你应该通知接口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输出窗口是否有任何绑定错误。