FallBackValue in IMultiValueConverter is UnsetValue



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

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

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

类似的安排正在处理其他 IMultiValueConverter 中此 XAML 窗体上的类似控件,但此处不行。 请指导我错过了什么?

注意:

  1. CurrentRec 是当前从视图模型中选定的对象
  2. DM_CategoryData是一个类,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;
}
}
}

为了向多重绑定转换器提供额外的静态数据,请使用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;
// ...
}

您正在尝试为 GroupBox.IsEnabled 属性设置回退值,它是一个布尔类型。但是您将值设置为 1。所以只有 Values[2] 返回 UnsetValue。尝试将布尔值设置为回退值。

相关内容

  • 没有找到相关文章

最新更新