【问题标题】:How to make the entire item area of multi-select combobox clickable如何使多选组合框的整个项目区域可点击
【发布时间】:2014-10-30 13:31:33
【问题描述】:

我有一个带有以下数据模板的多选组合框

<DataTemplate>
   <CheckBox HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"Content="{BindingTitle}"
                          IsChecked="{Binding Path=IsSelected, Mode=TwoWay}"
                           Click="CheckBox_Click"/>
</DataTemplate

当我单击复选框或复选框文本时,组合框中的项目被选中,但是当单击复选框区域外时,我希望它是被选中的组合框项目,但令我惊讶的是它没有被选中。这是一个错误还是这是预期的行为。

关于如何使整个区域可点击的任何帮助。

【问题讨论】:

  • 不确定这是否是预期的。但我认为这就是 WPF ComboBox 控件的工作原理
  • 也许它没有背景,所以没有什么要测试的。尝试设置Background="Transparent"
  • @Mike Strobel,不工作
  • 您能否给我们看一个小屏幕截图,其中包含您可以成功点击的位置以及您想要但不能点击的位置的注释?
  • @MikeStrobel ,我无法上传链接 [ {#} {Select} ] #-checkbox , { } -clickable area , blank space non-clickable

标签: c# .net wpf combobox


【解决方案1】:

将此添加到您的组合框:

 <ComboBox.ItemContainerStyle>
            <Style TargetType="ComboBoxItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                <Setter Property="VerticalContentAlignment" Value="Stretch" />
            </Style>
 </ComboBox.ItemContainerStyle>

项目容器负责项目外部的点击,默认情况下该值不会拉伸,因此应该对其进行排序,可能两侧有一些边距,取决于样式

【讨论】:

    【解决方案2】:

    您在错误的元素上将HorizontalContentAlignment 属性设置为True...您应该在集合控件上将其设置为True,因为它:

    获取或设置控件内容的水平对齐方式。

    <ListBox ItemsSource="{Binding SomeCollection}" HorizontalContentAlignment="Stretch" />
    

    更新>>>

    确实有效,如果它不适合您,那是因为您必须有一些其他 XAML 元素妨碍您。 在一个新项目中尝试这个非常简单的示例

    <DataTemplate DataType="{x:Type System:Boolean}">
        <CheckBox Content="Hello" IsChecked="{Binding ., Mode=TwoWay}" />
    </DataTemplate>
    

    ...

    <ListBox ItemsSource="{Binding SomeCollection}" HorizontalContentAlignment="Stretch" />
    

    ...

    SomeCollection = new ObservableCollection<bool>();
    SomeCollection.AddRange(new bool[] { true, false, true, true, false };
    

    【讨论】:

    • 你能发布组合框样式吗?
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多