使用MenuItems和单选按钮在WPF组合框中显示文本

时间:2012-12-03 00:24:24

标签: c# wpf combobox

我有一个带有单选按钮和可检查菜单项的组合框。当我选择一个值时,会显示单选按钮(包括/排除/忽略)的某些文本。这似乎是随机的,并不总是发生,但有时只会发生。

我想要的是a)根本不显示任何文本或b)我可以对字符串属性进行绑定,该属性将包含所选内容的一些摘要。与普通的组合框不同,这里显示的文字没有意义,因为我选择了一些任意组合的选项(不是列表中的单个值)

我尝试将Text / SelecteValue与属性绑定,但这不起作用。

<ComboBox Grid.Column="2" HorizontalAlignment="Left" Margin="0,4,0,0" Grid.Row="3" VerticalAlignment="Top" Width="125" SelectedValue="{Binding Settings.NameFilterTrx.Summary, UpdateSourceTrigger=PropertyChanged,  Mode=OneWay}">
  <MenuItem Header="Names with runway" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrx.NamesWithRunway, UpdateSourceTrigger=PropertyChanged}"/>
  <MenuItem Header="Names with number" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrxNamesWithNumber, UpdateSourceTrigger=PropertyChanged}"/>
  <MenuItem Header="Filtered elements as comments" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrx.FilteredAsComments, UpdateSourceTrigger=PropertyChanged}"/>
  <RadioButton GroupName="Group" Content="Exclude" IsChecked="{Binding Settings.NameFilterTrx.ModeExclude, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/>
  <RadioButton GroupName="Group" Content="Include" IsChecked="{Binding Settings.NameFilterTrx.ModeInclude, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/>
  <RadioButton GroupName="Group" Content="Ignore"  IsChecked="{Binding Settings.NameFilterTrx.ModeIgnore, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/>
</ComboBox>

如您所见,文本与所选值不对应。此外,只有单选按钮的文本是随机显示的,而不是菜单项的任何内容。

Screenshot

PS:SelectedValue的绑定是获取定义值的一条路径。如果已尝试Text以及没有绑定。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用扩展器来满足您的目标。此解决方案的问题在于扩展扩展器时,它可能会更改父容器的大小。所以我通常做的是将它放在网格中并指定它跨越多个行和列。然后我将Expander的z-index设置为一个较大的值。因此扩展的Expander将覆盖其他控件而不会更改父面板的大小。 :)