根据组合框中选定的字符串值切换datatemplate

时间:2011-07-28 19:12:23

标签: wpf combobox datatemplate switch-statement

根据组合框中选定的字符串值,我想要在网格内显示红色/蓝色datatempalte。

可以在没有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 :(得分:0)

为什么不使用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>