MVVM如何将不同的参数传递给选项卡控件中的同一控件

时间:2019-06-05 19:36:40

标签: mvvm mvvm-light

让我展示一些伪代码。

<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。

我想念什么吗?

0 个答案:

没有答案