c# - 在 WPF 中的组合框顶部有一个可单击的按钮

标签 c# wpf combobox

我可以让一个按钮出现在组合框的下拉列表中并且可以点击,但是我无法让选定的组合框项目(下拉列表已关闭)使按钮可以点击。它总是跳过按钮点击,只打开下拉列表。我基本上希望我设置的 Button_Click 事件处理程序在单击后被调用。这是我的示例组合框,它显示了按钮,但一旦位于所选项目中就不可点击:

<ComboBox x:Name="MyCombo" Width="200" Height="30" ItemsSource="{Binding ListCombo}">
        <ComboBox.Resources>
            <DataTemplate DataType="{x:Type local:ComboItemClass}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=SampleText}" Width="120" />
                    <Button Width="20" Content="..." Click="Button_Click"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.Resources>
    </ComboBox>

最佳答案

将按钮放在组合框内是我们现在可以在 WPF 中实现的非常酷的功能之一,我们(包括我在内)对此感到非常兴奋,然后才停下来考虑是否应该这样做。

在组合框中放置一个按钮很容易让用户感到困惑。我建议您将组合框列表项中的数据绑定(bind)到组合框外的按钮,您的用户会期望它。这样,您仍然可以通过从组合框中选择一个项目来更改按下按钮的最终结果。

编辑:

如果您有足够的空间,列表框可​​以完美地满足您的需求。

    <ListBox>
        <ListBoxItem>
            <StackPanel Height="34" HorizontalAlignment="Left" Margin="12,16,0,0"  VerticalAlignment="Top" Width="430" Orientation="Horizontal">
                <Button Content="Edit"  />
                <Button Content="Delete"  />
                <TextBlock Text="Port Information here" VerticalAlignment="Center" Margin="20,0" />
            </StackPanel>

        </ListBoxItem>
        <ListBoxItem>
            <StackPanel Height="34" HorizontalAlignment="Left" Margin="12,16,0,0"  VerticalAlignment="Top" Width="430" Orientation="Horizontal">
                <Button Content="Edit"  />
                <Button Content="Delete"  />
                <TextBlock Text="Port Information here" VerticalAlignment="Center" Margin="20,0" />
            </StackPanel>

        </ListBoxItem>
        <ListBoxItem>
            <StackPanel  Height="34" HorizontalAlignment="Left" Margin="12,16,0,0"  VerticalAlignment="Top" Width="430" Orientation="Horizontal">
                <Button Content="Edit"  />
                <Button Content="Delete"  />
                <TextBlock Text="Port Information here" VerticalAlignment="Center" Margin="20,0" />
            </StackPanel>

        </ListBoxItem>

关于c# - 在 WPF 中的组合框顶部有一个可单击的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740732/

相关文章:

c# - 命名空间前缀 "system"未定义

c# - 在用户控件 WPF 中使用数据模板选择器时抛出空引用异常

c# - 我用来填充 ComboBox C# 的排序列表

c# - 从具有模式的目录中获取文件

c# - 确定 int 数组中最常见的元素

c# - 每个结果带有计数器的匿名类型

c# - 为个人/客户建模联系方式

c# - 以编程方式将图像附加到椭圆

c# - 带有列表框的 foreach 的奇怪问题

vba - ListBox 基于 ComboBox 填充 - 不同的数据结构