首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FallBackValue in IMultiValueConverter is UnsetValue

FallBackValue in IMultiValueConverter is UnsetValue
EN

Stack Overflow用户
提问于 2017-07-06 05:14:19
回答 2查看 308关注 0票数 0

我试图在XAML中为多个控件使用单个IMultiValueConverter。

我使用一个简单的字符串文本来判断IMultiValueConverter应该返回的值。

但我在values2中得到了values2(参数名为ModifierCategoryEnableDisable )的值,当涉及到转换ModifierCategoryEnableDisable的函数时。

类似的安排在其他IMultiValueConverters中对这个XAML表单进行类似的控制,但这里没有。请指点我遗漏了什么?

注意:

  1. CurrentRec是当前从ViewModel中选择的对象。
  2. DM_CategoryData是类,Current_Selected_Category是视图模型当前对象(即CurrenRec )中的List<DM_CategoryData>

XAML:

代码语言:javascript
复制
<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#:

代码语言:javascript
复制
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;
        }
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-06 12:56:06

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

代码语言:javascript
复制
<MultiBinding Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Converter="{StaticResource MDNS}" ConverterParameter="1">
    <Binding Path="SearchFound" />
    <Binding Path="CurrentRec.Current_Selected_Category"/>
</MultiBinding>

并检查Convert方法中的参数:

代码语言:javascript
复制
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    string Command = parameter as string;

    // ...
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-06 07:32:30

您正在尝试为GroupBox.IsEnabled属性设置回退值,它是bool类型。但是您将值设置为1,因此只有Values2返回UnsetValue。尝试将bool值设置为Fallbackvalue。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44940286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档