C# 组合框斗争

C# 组合框斗争,c#,wpf,combobox,C#,Wpf,Combobox,我正试图在VisualStudio中创建一个组合框。这几乎是定制的,我在显示物品时遇到了很大的问题 默认情况下,项目仅显示绑定的名称 鼠标悬停时,会出现两个按钮,一个是编辑项目,另一个是删除项目-这部分工作正常 问题是当项目被选中时。我想在组合框内容演示器中隐藏这些按钮,但想将它们保留在弹出窗口中 最简单的解决方案是在选中项目时将其隐藏在弹出窗口中,但如何隐藏?其他想法 <ComboBox.ItemTemplate> <DataTemplate DataType="{x

我正试图在VisualStudio中创建一个组合框。这几乎是定制的,我在显示物品时遇到了很大的问题

默认情况下,项目仅显示绑定的名称 鼠标悬停时,会出现两个按钮,一个是编辑项目,另一个是删除项目-这部分工作正常 问题是当项目被选中时。我想在组合框内容演示器中隐藏这些按钮,但想将它们保留在弹出窗口中

最简单的解决方案是在选中项目时将其隐藏在弹出窗口中,但如何隐藏?其他想法

<ComboBox.ItemTemplate>
    <DataTemplate DataType="{x:Type controls:TEMP}">
        <Grid Height="42" Width="{StaticResource ToggleButtonWidth}">

            <!--Selected Item Display-->
            <Grid Name="DefaultView">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="25"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="25"/>
                </Grid.ColumnDefinitions>

                <TextBox x:Name ="NameDisplay"
                         Text="{Binding Name, Mode=TwoWay}"
                         Grid.Column="1"
                         HorizontalAlignment="Left"
                         VerticalContentAlignment="Center"
                         IsEnabled="{Binding Path=IsChecked, ElementName=EditButton}">
                    <TextBox.Style>
                        <Style TargetType="{x:Type TextBox}">
                            <Setter Property="OverridesDefaultStyle" Value="True"/>
                            <Setter Property="VerticalContentAlignment" Value="Center"/>
                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                            <Setter Property="BorderThickness" Value="0"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type TextBox}">
                                        <ScrollViewer Margin="0"
                                                        x:Name="PART_ContentHost" />
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Selected}" Value="False">
                                    <Setter Property="HorizontalContentAlignment" Value="Left"/>
                                </DataTrigger>
                                <Trigger Property="IsEnabled" Value="True">
                                    <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=NameDisplay}"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </TextBox.Style>
                </TextBox>
                <Button x:Name="DeleteButton"  
                        Grid.Column="0" 
                        Width="20" Height="20" 
                        Visibility="{Binding MouseOver, Converter={StaticResource BoolToVis}}">
                    <Button.Style>
                        <Style TargetType="{x:Type Button}">
                            <EventSetter Event="Click" Handler="DeleteItem"/>
                            <Setter Property="Margin" Value="0,0"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type Button}">
                                        <ContentPresenter/>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Button.Style>
                    <Image Source="Images/button_cancel.png"
                           Width="20" Height="20" />
                </Button>
                <ToggleButton x:Name="EditButton"
                        Grid.Column="2" 
                        Width="20" Height="20" 
                        Visibility="{Binding MouseOver, Converter={StaticResource BoolToVis}}"
                        Content="e">
                </ToggleButton>
            </Grid>
        </Grid>
    </DataTemplate>
</ComboBox.ItemTemplate>

汉顿用此解决方案解决了我的问题:


谢谢您的帮助

有代码要显示吗?忘了这一点,现在在这里:]这可能会有帮助: