0

我有一些像这样设置的组合框:

    <ComboBox Name="CB_OS" Grid.Row="5" ItemsSource="{Binding OS_Sellection}" SelectedIndex="0" Margin="2" SelectionChanged="OSSelectionChanged">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <ComboBoxItem Content="{Binding Name}" IsSelected="{Binding IsSelected, Mode=TwoWay}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

ComboBox 正确填充了 ComboBoxItems,但单击文本 (Content) 不会选择该项目。我必须单击其他地方,那里没有文本来实际更改所选项目。

如果我将其更改为:

<ComboBox Name="CB_OS" Grid.Row="5" SelectedIndex="0" Margin="2" SelectionChanged="OSSelectionChanged">
            <ComboBoxItem Content="OOOOOOOOO"/>
            <ComboBoxItem Content="OOOOOOOOO"/>
            <ComboBoxItem Content="OOOOOOOOO"/>
</ComboBox>

它工作正常。

OS_Selection 仅包含以下成员:

private string name;
private bool isChecked;
private bool isSelected;

所以我的问题是:如何使整行(项目)可点击?

4

1 回答 1

1

不要在ComboBoxItem里面放一个ComboBox.ItemTemplate

改变这个:

     <ComboBox Name="CB_OS" Grid.Row="5" ItemsSource="{Binding OS_Sellection}" SelectedIndex="0" Margin="2" SelectionChanged="OSSelectionChanged">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <ComboBoxItem Content="{Binding Name}" IsSelected="{Binding IsSelected, Mode=TwoWay}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

为了这:

<ComboBox Grid.Row="5" Margin="2"
          ItemsSource="{Binding OS_Sellection}"
          DisplayMemberPath="Name"/>

此外,WPF 不绑定到private fields,仅绑定到public properties.

于 2013-09-18T16:52:58.423 回答