Переключите табличку с данными в зависимости от выбранного значения строки в выпадающем списке - PullRequest
0 голосов
/ 28 июля 2011

Основываясь на выбранном строковом значении в выпадающем списке, я хочу показать красный / синий dateatempalte внутри сетки.

Можно ли это сделать без ContentControl?

<UserControl.Resources >

<DataTemplate x:Key="red">
        <TextBox Text="red" />
    </DataTemplate>

    <DataTemplate x:Key="blue">
        <TextBox Text="blue" />
    </DataTemplate>

</UserControl.Resources>

<ComboBox ??? />
<Grid>
   // Show red or blue datatemplate here
</Grid>

1 Ответ

0 голосов
/ 29 июля 2011

Почему бы не использовать ContentControl?

Чтобы сделать это просто, я бы поместил шаблоны в массив, который ComboBox затем может связать с:

<x:Array x:Key="templates" Type="{x:Type DataTemplate}">
    <DataTemplate>
        <DataTemplate.Resources>
            <sys:String x:Key="DisplayString">Red</sys:String>
        </DataTemplate.Resources>
        <TextBox Text="red" />
    </DataTemplate>

    <DataTemplate>
        <DataTemplate.Resources>
            <sys:String x:Key="DisplayString">Blue</sys:String>
        </DataTemplate.Resources>
        <TextBox Text="blue" />
    </DataTemplate>
</x:Array>
<ComboBox Name="combo" ItemsSource="{StaticResource templates}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Resources[DisplayString]}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
<Grid>
    <ContentControl ContentTemplate="{Binding SelectedItem, ElementName=combo}" />
</Grid>
...