让我展示一些伪代码。
<TabControl x:Name="tabCtrlMain" Style="{StaticResource MasterTabControl}">
<TabItem x:Name="Tab1" Header="Tab1">
<view:UserControl1/>
</TabItem>
<TabItem x:Name="Tab2" Header="Tab2">
<view:UserControl2/>
</TabItem>
</TabControl>
然后假设我有UserControl1
<DockPanel x:Name="dpFullTab" Margin="5" LastChildFill="True">
<DockPanel x:Name="dbFieldsPanel" DockPanel.Dock="Top">
<StackPanel x:Name="stackPanelFields" DockPanel.Dock="Top" Orientation="Vertical">
<templates:TemplatesUserControl"/>
<templates:SomeControl x:Name="templateCounterparties"/>
<templates:ProblematicControl ComboBoxEnabled ="True"/>
</StackPanel>
</DockPanel>
UserControl2:
<DockPanel x:Name="dpFullTab" Margin="5" LastChildFill="True">
<DockPanel x:Name="dbFieldsPanel" DockPanel.Dock="Top">
<StackPanel x:Name="stackPanelFields" DockPanel.Dock="Top" Orientation="Vertical">
<templates:TemplatesUserControl"/>
<templates:DifferentControl x:Name="templateCounterparties"/>
<templates:ProblematicControl ComboBoxEnabled ="False"/>
</StackPanel>
</DockPanel>
ProblematicUserControl
有一些组合框,我想根据设置的选项卡禁用它们。
我在ProblematicUserControl
后面的代码中创建了一个名为ComboBoxEnabled
的属性,然后使用该属性通过MVVM light Messenger发送消息给我用Set()
设置的属性MVVM轻型框架的功能,该功能在INotify
ViewModel中实现ProblematicControl
。
然后将其绑定到IsEnabled
XAML上组合框的ProblematicUserControl
属性。
问题在于,由于viewModel相同,因此只有第二个选项卡占优势,并且没有两个单独的ViewModel。因此,这两种方式都被禁用,这不是我想要的。仅第二个选项卡是我要禁用的选项卡。此外,UserControl2还有一个按钮,可以用ProblematicControl
和{strong>工作打开ProblematicControl ComboBoxEnabled = true
的模态,但是当我关闭窗口时,已禁用的选项卡中的所有comboBoxes都已启用。因此模态窗口更改了ViewModel。
我想念什么吗?