Можно ли установить SourceItem комбинированного списка с DataTrigger? - PullRequest
0 голосов
/ 10 сентября 2018

В моей модели просмотра есть три коллекции: одна для товаров категории 1, другие для товаров категории 2 и другая для товаров категории 3.

Кроме того, у меня есть еще одно свойство - IDCategory с категорией модели представления.

В моем представлении есть comboBox, который я хочу привязать к первой коллекции, если свойство IDCategory модели представления равно 1, которое связывает вторую коллекцию, если свойство IDCategory равно 2, для привязки последней коллекции, если IDCategory 3.

Я пытаюсь использовать источник данных таким образом:

<ComboBox.ItemTemplate>
                                    <DataTemplate>
                                        <DataTemplate.Triggers>
                                            <DataTrigger Binding="{Binding ElementName=myUserControl, Path=DataContext.IDCategory}" Value="1">
                                                <Setter Property="ItemsSource" Value="{Binding MyCollection1}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding ElementName=myUserControl, Path=DataContext.IDCategory}" Value="2">
                                                <Setter Property="ItemsSource" Value="{Binding MyCollection2}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding ElementName=myUserControl, Path=DataContext.IDCategory}" Value="3">
                                                <Setter Property="ItemsSource" Value="{Binding MyCollection3}"/>
                                            </DataTrigger>
                                        </DataTemplate.Triggers>
                                    </DataTemplate>
                                </ComboBox.ItemTemplate>

Но ItemsSource недоступен в наборе dataTrigger, поэтому мне интересно, действительно ли возможно такое решение.

Спасибо.

1 Ответ

0 голосов
/ 10 сентября 2018

Триггеры должны быть в стиле ComboBox:

<ComboBox.Style>
    <Style TargetType="ComboBox">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=myUserControl, Path=DataContext.IDCategory}"
                         Value="1">
                <Setter Property="ItemsSource" Value="{Binding MyCollection1}"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding ElementName=myUserControl, Path=DataContext.IDCategory}"
                         Value="2">
                <Setter Property="ItemsSource" Value="{Binding MyCollection2}"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding ElementName=myUserControl, Path=DataContext.IDCategory}"
                         Value="3">
                <Setter Property="ItemsSource" Value="{Binding MyCollection3}"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ComboBox.Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...