组合框选择

时间:2011-11-21 08:14:35

标签: c# wpf .net-4.0 combobox datatemplate

我有这个组合框,其中包含带复选框和文本框的数据模板。一切正常,但我想让它更容易选择一个值。现在我必须单击chechbox来更改复选框的值。现在我希望能够点击组合框中的项目,也可以切换复选框。

这可能吗?如果是,那么如何?

这是我现在的解决方案的图片

enter image description here

这是我的组合框

的代码
<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>

3 个答案:

答案 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)

这里的好处是,您的复选框和文本是两个不同的实体,您只需使用复选框的文本属性并绑定它就需要将它们设为一个实体。这样,无论何时单击文本,您的复选框都会被选中。