MVVM Как передать разные параметры одному и тому же элементу управления внутри элемента с вкладками - PullRequest
0 голосов
/ 05 июня 2019

Позвольте мне показать некоторый псевдокод.

<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 в свойство, которое я установил с помощью Set(), которое является функциейЛегкая структура MVVM, которая реализует INotify в ProblematicControl ViewModel.

Затем я связал его со свойством IsEnabled поля со списком в ProblematicUserControl XAML.

Дело в том, что поскольку viewModel одинакова, преобладает только вторая вкладка, и тамнет двух отдельных ViewModels.Так что это означает, что отключены в обоих, что не то, что я хочу.Я хочу отключить только вторую вкладку.Кроме того, в UserControl2 есть кнопка, которая открывает модал с ProblematicControl с ProblematicControl ComboBoxEnabled = true и , работает , но когда я закрываю окно, все комбинированные списки на вкладках, которые были отключены, теперь становятся включенными.Таким образом, модальное окно изменило ViewModel.

Я что-то упустил?

...