C# 使用ItemTemplateing更改网格的内容 现状
我有网格,这个网格有3行。每行包含一个我的UserControl。每个UserControl都硬编码到一个网格行:C# 使用ItemTemplateing更改网格的内容 现状,c#,wpf,xaml,itemtemplate,C#,Wpf,Xaml,Itemtemplate,我有网格,这个网格有3行。每行包含一个我的UserControl。每个UserControl都硬编码到一个网格行: <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
[……]
我的任务
我的控制装置太多了,我的窗户装不下。我想允许用户在所有可用控件之间切换,方法是在组合框
中选择他喜欢的控件,然后按按钮
我考虑过使用ItemTemplating来实现这一点。我发现了如何处理不同类型的数据类型,这很有帮助。然而,我觉得列表在这里有点多余,因为它总是只有一个项目,但我不知道该用什么来代替
我的问题
有没有更好的解决方案,比如只使用一个项目的列表,或者有没有更好的方法来创建“可交换”控件?这里的代码将实现一个控件,其内容根据组合框的值进行更改。这只是使用省略号,但如果需要,您可以将自己的用户控件插入ContentControl:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ComboBox Name="MyComboBox">
<ComboBoxItem Content="Fish"/>
<ComboBoxItem Content="Chips"/>
</ComboBox>
<Grid Grid.Row="1">
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content">
<Setter.Value>
<Ellipse Fill="Green" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyComboBox, Path=SelectedItem.Content}" Value="Fish">
<Setter Property="Content">
<Setter.Value>
<Ellipse Fill="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=MyComboBox, Path=SelectedItem.Content}" Value="Chips">
<Setter Property="Content">
<Setter.Value>
<Ellipse Fill="Blue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
</Grid>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ComboBox Name="MyComboBox">
<ComboBoxItem Content="Fish"/>
<ComboBoxItem Content="Chips"/>
</ComboBox>
<Grid Grid.Row="1">
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content">
<Setter.Value>
<Ellipse Fill="Green" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyComboBox, Path=SelectedItem.Content}" Value="Fish">
<Setter Property="Content">
<Setter.Value>
<Ellipse Fill="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=MyComboBox, Path=SelectedItem.Content}" Value="Chips">
<Setter Property="Content">
<Setter.Value>
<Ellipse Fill="Blue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
</Grid>