我有一个带有以下datatemplate
的多选组合框<DataTemplate>
<CheckBox HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"Content="{BindingTitle}"
IsChecked="{Binding Path=IsSelected, Mode=TwoWay}"
Click="CheckBox_Click"/>
</DataTemplate
当我点击复选框或复选框文本时,组合框中的项目被选中,但是当在复选框区域外单击时,我希望它是选择的组合框项目,但令我惊讶的是它没有被选中。这是一个错误还是预期的行为。
有关如何使整个区域可点击的任何帮助。
答案 0 :(得分:0)
您已在错误的元素上将HorizontalContentAlignment
属性设置为True
...您应该将其设置为集合控件上的True
,而不是:
获取或设置控件的内容的水平对齐方式。
<ListBox ItemsSource="{Binding SomeCollection}" HorizontalContentAlignment="Stretch" />
更新&gt;&gt;&gt;
这个 工作,如果它不适合你,那是因为你必须让其他一些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 };
答案 1 :(得分:0)
将此添加到您的组合框:
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
</ComboBox.ItemContainerStyle>
项目容器负责项目外部的点击,默认情况下值不是拉伸,所以这应该排序,可能是边缘的一些边距,取决于样式