所以我只想制作一个简单的组合框,它有 2 个值,真和假。关键是我要绑定的项目应该收到一个“1”表示真,一个“0”表示假。如果可能的话,我正在尝试使用纯 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;
}
它的工作原理是,如果我选择正确“1”设置正确,反之亦然,但是如果代码中的另一个位置将属性更改为 1 或 0,它还需要将当前项目设置为 True / False。Inotifyproperty changed 已在绑定字符串上正确设置,我可以中断被调用的隐蔽点,但该项目不会改变。有没有一种简单的方法可以在纯 xaml 中与组合框建立值/索引关系(我不想使用支持对象来实现这一点)。如果没有,有没有办法纠正我的转换器以获得我正在寻找的行为?