所以我只想制作一个简单的组合框,它有2个值,true和false。 catch是我要绑定的项应该接收“1”表示true,“0”表示false。如果可能的话,我试图用纯xaml完成(转换器是可以接受的,但我因此无法使它工作)。这是我的代码......
<ComboBox SelectedItem="{Binding Criteria,Converter={StaticResource BoolToIntConverter}}">
<ComboBox.Items>
<ComboBoxItem Name="True" Content="True" />
<ComboBoxItem Name="False" Content="False" />
</ComboBox.Items>
</ComboBox>
转换器看起来像这样......
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
ComboBoxItem cbo = new ComboBoxItem();
if (value.ToString() == "1")
cbo.Name = "True";
else
cbo.Name = "False";
return cbo;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value.ToString().Contains("True"))
return 1;
return 0;
}
它的工作原理是,如果我选择True“1”设置正确,反之亦然,但是如果属性被另一个地方改为1或0,它还需要将当前项设置为True / False。码。 Inotifyproperty已更改在绑定字符串上正确设置,我可以断开被调用的隐蔽点,但该项目不会更改。有一种简单的方法可以在纯xaml中使用组合框建立值/索引关系(我不想使用支持对象来实现这一点)。如果没有,有没有办法纠正我的转换器,以获得我正在寻找的行为?
答案 0 :(得分:1)
可以在复选框上应用控件模板,使其显示为组合框。如何在XAML中完成此操作的示例如下:
<CheckBox Content="Select" Width="100" Height="22">
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ComboBox>
<ComboBoxItem x:Name="TrueComboBoxItem" Content="True" IsSelected="{Binding IsChecked, RelativeSource={RelativeSource AncestorType=CheckBox}, UpdateSourceTrigger=PropertyChanged}" />
<ComboBoxItem x:Name="FalseComboBoxItem" Content="False" />
</ComboBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</CheckBox.Style>
</CheckBox>
我已经在Snoop中验证过这是有效的。