使用数据触发器创建具有不同项目设计的组合框

时间:2018-08-28 06:24:59

标签: wpf data-binding combobox

我已经使用C#在后​​端定义了名称和颜色,所以我想选择项cat并更改其其他元素。

enter image description here

1 个答案:

答案 0 :(得分:0)

您没有显示用于设置ComboBox的XAML,但是最好的方法是使用数据模板设置ComboBox项,但是希望它们看起来像。如果希望在“颜色”画笔为空的情况下不显示颜色框,则可以向模板添加触发器以使其变为“隐藏”。请注意,如果将其折叠起来,它将重新对齐其他控件的布局。

<DataTemplate x:Key="cbDataTemplate">
    <StackPanel Orientation="Horizontal">
        <Rectangle x:Name="clrBox" Fill="{Binding Color, TargetNullValue=Transparent}"
                   Stroke="Black" StrokeThickness="2" Width="16"/>
        <TextBlock Text="{Binding Name}" Margin="10,0,0,0"/>
    </StackPanel>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Color}" Value="{x:Null}">
            <Setter TargetName="clrBox" Property="Visibility" Value="Hidden"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

然后使用此DataTemplate只需将其添加到ComboBox中,如下所示:

<ComboBox ItemTemplate="{StaticResource cbDataTemplate}" Width="150"/>

希望有帮助...