繁体   English   中英

创建一个WPF自定义组合框

[英]Create a WPF Custom ComboBox

我正在尝试做的是一个组合框,该组合框的顶部具有最喜欢的值,并且具有不同的背景颜色和按钮。 现在我有:

<UserControl x:Class="ComboBoxWithButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d"
             Name="root"
             d:DesignWidth="300" Height="25">

    <ComboBox 
         x:Name="ComboBoxBtn" 
         VerticalAlignment="Top" 
         HorizontalAlignment="Left" 
         Margin="0,0,0,-1" 
         Width="300" 
         ItemsSource="{Binding Source, RelativeSource={RelativeSource AncestorType=UserControl}}"
         SelectedItem="{Binding Path=Selected, Mode=TwoWay, RelativeSource={RelativeSource AncestorType=UserControl}}">
       <ComboBox.Resources>
            <Style TargetType="ComboBoxItem">
                ????
            </Style>
        </ComboBox.Resources>
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.Style>
                        <Style TargetType="Grid">
                            <Setter Property="Background" Value="#FFE6E6FA"/>
                        </Style>
                    </Grid.Style>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Label Content="{Binding}" Width="250" />
                    <Button Grid.Column="1" Command="{Binding CommandButton, ElementName=root}"
                            CommandParameter="{Binding}">+</Button>
                </Grid>
            </DataTemplate>

        </ComboBox.ItemTemplate>
    </ComboBox>
</UserControl>

现在,我有一个添加按钮,因此可以将我的项目添加为收藏夹。 但是我现在想要的是,基于该物品,我是否将其表示为收藏。

保护套是最喜欢的,具有不同的背景色和[-]按钮(可删除)。 案例不是背景像往常一样是白色并且有[+]。

看看ContentControl可以在这里代替Button来帮助您。

 <ComboBox.ItemTemplate>
 <DataTemplate>
 <ContentControl>
    <Style TargetType="ContentControl">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ...}" Value="True">
                <Setter Property="Content">
                    <Setter.Value>
                            <Grid>
                                <Grid.Style>
                                    <Style TargetType="Grid">
                                        <Setter Property="Background" Value="#FFE6E6FA"/>
                                    </Style>
                                </Grid.Style>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <Label Content="{Binding}" Width="250" />
                                <Button Grid.Column="1" Command="{Binding CommandButton, ElementName=root}"
                        CommandParameter="{Binding}">+</Button>
                            </Grid>
                        </Setter.Value>
                </Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding ...}" Value="False">
                <Setter Property="Content">
                    <Setter.Value>
                            <Grid>
                                <Grid.Style>
                                    <Style TargetType="Grid">
                                        <Setter Property="Background" Value="Yellow"/>
                                    </Style>
                                </Grid.Style>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <Label Content="{Binding}" Width="250" />
                                <Button Grid.Column="1" Command="{Binding CommandButton, ElementName=root}"
                                    CommandParameter="{Binding}">-</Button>
                            </Grid>
                        </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ContentControl>
</DataTemplate>
</ComboBox.ItemTemplate>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM