IMul​​tiValueConverter 中的 FallBackValue 为 UnsetValue

FallBackValue in IMultiValueConverter is UnsetValue

我正在尝试将单个 IMultiValueConverter 用于 XAML 中的多个控件。

我正在使用一个简单的字符串文字来告诉 IMultiValueConverter 应该是什么值 return。

但是我在 values[2] 中得到 DependencyProperty.UnsetValue,即当涉及到 ModifierCategoryEnableDisable 的转换功能时名为 Command 的参数的值。

类似的安排正在其他 IMultiValueConverters 中的此 XAML 表单上进行类似的控制,但不在此处。 请指导我缺少什么?

注意:

  1. CurrentRec 是当前从 ViewModel 中选择的对象
  2. DM_CategoryData是一个Class,Current_Selected_Category是ViewModel的当前对象,即CurrenRec中的一个List<DM_CategoryData>

XAML:

<GroupBox Width="226" Height="117"  Margin="0" Canvas.Top="252" Header="Modifiers" Canvas.Left="55" >
         <GroupBox.IsEnabled>
             <MultiBinding Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Converter="{StaticResource MDNS}">
                     <Binding Path="SearchFound" />
                     <Binding Path="CurrentRec.Current_Selected_Category"/>
                     <Binding Path="Command" FallbackValue="1" />
              </MultiBinding>
        </GroupBox.IsEnabled>
 </GroupBox>

C#:

public class ModifierCategoryEnableDisable : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        string Command = values[2].ToString();
        bool Retval1 = false;
        string Retval2 = "";
        switch(Command)
        {
            case "1":
                bool SearchFound = (bool)values[0];
                DM_CategoryData CurrentSelectedItemCategory = (DM_CategoryData)(values[1]);
                Retval1 = SearchFound && (CurrentSelectedItemCategory == null ? true : CurrentSelectedItemCategory.IsModifier.Equals("1") ? false : true);
                break;
            case "2":
                Retval2 = "0";
                break;
        }               

        if(Command.Equals("1"))
        {
            return Retval1;
        }
        else
        {
            return Retval2;
        }
   }
}

您正在尝试为 GroupBox.IsEnabled 属性 设置回退值,它是一个 bool 类型。但是您将值设置为 1。因此只有 Values[2] returns UnsetValue。尝试将 bool 值设置为 Fallbackvalue。

为了向多绑定转换器提供额外的静态数据,请使用 ConverterParameter:

<MultiBinding Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Converter="{StaticResource MDNS}" ConverterParameter="1">
    <Binding Path="SearchFound" />
    <Binding Path="CurrentRec.Current_Selected_Category"/>
</MultiBinding>

并检查Convert方法中的参数:

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    string Command = parameter as string;

    // ...
}