我试图在XAML中为多个控件使用单个IMultiValueConverter。
我使用一个简单的字符串文本来判断IMultiValueConverter应该返回的值。
但我在values2中得到了values2(参数名为ModifierCategoryEnableDisable )的值,当涉及到转换ModifierCategoryEnableDisable的函数时。
类似的安排在其他IMultiValueConverters中对这个XAML表单进行类似的控制,但这里没有。请指点我遗漏了什么?
注意:
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;
}
}
}发布于 2017-07-06 12:56:06
为了向多绑定转换器提供额外的静态数据,请使用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;
// ...
}发布于 2017-07-06 07:32:30
您正在尝试为GroupBox.IsEnabled属性设置回退值,它是bool类型。但是您将值设置为1,因此只有Values2返回UnsetValue。尝试将bool值设置为Fallbackvalue。
https://stackoverflow.com/questions/44940286
复制相似问题