我有一个 View Model
控制 Tree View
.在我的 GUI 中还有一个 Tab Control
不受 View Model
控制的.如果我想使用 Tree View
访问 Tab Control
的元素我怎么给我的View Model
访问它(Tab Control
)?
我猜这与我如何从 Tree View
传递选定项目的方式类似。从代码隐藏到 View Model
.
代码隐藏:
//Gets selected item in TreeView
private void Tree_One_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
MainWindowViewModel.SelectedItem = e.NewValue as TreeViewItem;
}
View Model
:public static TreeViewItem SelectedItem { get; set; } //Selected Node\
我目前的尝试
代码隐藏:
MainWindowViewModel.middleControl = tabControl1 as TabControl;
View Model
:public static TabControl middleControl { get; set; }
以下内容不起作用,因为
View Model
仍然看不到 Tab Control
中的任何项目if (parent_Node.Items.Contains(SelectedItem))
middleControl.SelectedIndex = nameOfTabItem;
最佳答案
View 模型不应直接使用 Tab 控件。 MVVM 架构的全部目的是分离 UI 和业务逻辑。只有 View 才能访问 UI 中的控件,即使如此,由于数据绑定(bind)和 View 模型中的逻辑,这也很少需要。
为什么选项卡控件不由 View 模型管理?
此外, View 模型不应该知道任何关于 TreeViewItems 的信息——它应该对绑定(bind)到树中每个项目的模型类进行操作。
关于c# - 访问 View 模型类中的选项卡控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18059790/