我有这个组合框,其中包含带复选框和文本框的数据模板。一切正常,但我想让它更容易选择一个值。现在我必须单击chechbox来更改复选框的值。现在我希望能够点击组合框中的项目,也可以切换复选框。
这可能吗?如果是,那么如何?
<ComboBox Name="employeeComboBox" Margin="2,0,2,0"
ScrollViewer.CanContentScroll="False"
DataContext="{Binding EmployeesOverviewViewModel, Source={StaticResource ViewModelLocator}}"
ItemsSource="{Binding Employees}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsSelected}" Margin="2,0,2,2" VerticalAlignment="Center"/>
<TextBlock Text="{Binding Path=Name}" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
答案 0 :(得分:3)
将您的DataTemplate更改为:
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsSelected}"
Margin="2,0,2,2"
Content="{Binding Path=Name}"
VerticalAlignment="Center"/>
</DataTemplate>
它应该有用。
答案 1 :(得分:2)
为什么不在CheckBox上使用Content属性?
<CheckBox Content="Hello, World" />
这样,即使单击文本(内容),复选框也会切换。
至于您的具体情况,您可以将Name绑定到Content而不是为它创建单独的TextBlock,它应该按照您的意愿工作。
答案 2 :(得分:1)
这里的好处是,您的复选框和文本是两个不同的实体,您只需使用复选框的文本属性并绑定它就需要将它们设为一个实体。这样,无论何时单击文本,您的复选框都会被选中。