C# 如何禁止IValueConverter中的ConvertBack值
我使用IValueConverter将枚举绑定到三个单选按钮 当选中单选按钮时,我将使用ConvertBack设置值 但是我发现我不知道如何编写C# 如何禁止IValueConverter中的ConvertBack值,c#,uwp,C#,Uwp,我使用IValueConverter将枚举绑定到三个单选按钮 当选中单选按钮时,我将使用ConvertBack设置值 但是我发现我不知道如何编写转换回 public ImageShackEnum KkaHsa { get; set; } public object ConvertBack(object value, Type targetType, object parameter, string language) { if (value is true) {
转换回
public ImageShackEnum KkaHsa { get; set; }
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (value is true)
{
return MyEnum;
}
//If I return DependencyProperty.UnsetValue that will throw.
}
我在uwp中找不到我在wpf中使用的
我定义了一个新的枚举值来解决它,但我认为它可能存在另一种解决方法。如果返回不兼容的值,则可以使ConvertBack
操作无效-理想情况下为null
。在这种情况下,无法将其分配回视图模型中的属性,系统将忽略它,而是响应选中的IsChecked==true
单选按钮
另一种方法是创建多个属性,为枚举的每个状态创建一个bool
属性,以及一个总体SelectedValue
。例如:
公共MyEnum SelectedValue{…}
public bool ValueIsOptionA
{
get => SelectedValue == MyEnum.OptionA;
set => SelectedValue = MyEnum.OptionA;
}
public bool ValueIsOptionB
{
get => SelectedValue == MyEnum.OptionB;
set => SelectedValue = MyEnum.OptionB;
}
public bool ValueIsOptionC
{
get => SelectedValue == MyEnum.OptionC;
set => SelectedValue = MyEnum.OptionC;
}
然后将每个RadioButton.IsChecked
绑定到其各自的ValueIsOptionX
属性
显然,这个解决方案会导致更多的代码重复,但它避免了使用null
值的“肮脏攻击”。我通常只写抛出新的NotSupportedException()代码>在ConvertBack@kurakura88我需要真实的价值。