C# 如何禁止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) {

我使用IValueConverter将枚举绑定到三个单选按钮

当选中单选按钮时,我将使用ConvertBack设置值

但是我发现我不知道如何编写
转换回

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我需要真实的价值。