在WPF中选择静态ComboBoxItems的项目

时间:2015-08-26 10:13:16

标签: c# wpf mvvm combobox

我有一个带有静态项目的ComboBox

<ComboBox SelectedItem="{Binding SelectedOperator}" >
     <ComboBoxItem Content="=" IsSelected="True" />
     <ComboBoxItem Content="&gt;" />
     <ComboBoxItem Content="&lt;" />                    
</ComboBox>

但是虽然设置了IsSelected="True",但未选择第一项。

我能以某种方式在WPF中选择吗?如果真的有必要,我只想在代码隐藏中执行此操作。

2 个答案:

答案 0 :(得分:2)

您可能想要使用ComboBoxItem的Content字符串进行SelectedOperator绑定,在这种情况下,您可以使用FallbackValue

<ComboBox SelectedValuePath="Content"
          SelectedValue="{Binding SelectedOperator, FallbackValue=\=}">
    <ComboBoxItem Content="=" />
    <ComboBoxItem Content="&gt;" />
    <ComboBoxItem Content="&lt;" />
</ComboBox>

答案 1 :(得分:1)

如果你绝对必须在XAML中保留所有内容,那么命名ComboBox并从其他元素绑定到SelectedItem可能是可行的。您将没有绑定到SelectedOperator以在VM /代码隐藏中使用,但这可能不是一个交易破坏者,具体取决于您的应用程序的设置方式。

<Grid x:Name="LayoutRoot" HorizontalAlignment="Center">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <ComboBox x:Name="MyComboBox"
            Grid.Row="0"
            Width="80"
            Height="25">
        <ComboBoxItem Content="=" IsSelected="True" />
        <ComboBoxItem Content="&gt;" />
        <ComboBoxItem Content="&lt;" />
    </ComboBox>
    <TextBox Grid.Row="1" Text="{Binding ElementName=MyComboBox, Path=SelectedItem.Content}" />
</Grid>