簡體   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