无法将“MS.Internal.NamedObject”类型的对象强制转换为“System.IConvertible

时间:2018-04-09 09:24:55

标签: wpf tabcontrol imultivalueconverter

我有一个标签控件,其中有多个标签项。我正在尝试将多值转换器应用于tabitem的visibility属性。

<TabControl>
 <TabItem
            DataContext="{Binding TabModel[3]}"
            x:Name="Tab3"
            Header="Test">
                <TabItem.Visibility>
                    <MultiBinding Converter="{StaticResource settingsvisibility}">
                        <Binding Path="UserRole"/>
                        <Binding Path="UserName"/>
                    </MultiBinding>
                </TabItem.Visibility>
                <tabView:view />
            </TabItem></tabControl>

我的转换器代码如下

 public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            Visibility visiblity = Visibility.Collapsed;
            int id = System.Convert.ToInt32(values[0]);
            string tabName = values[1].ToString();
...
....
...
}

但价值没有得到正确的传递。我得到以下异常

  

无法将“MS.Internal.NamedObject”类型的对象强制转换为类型   'System.IConvertible。任何人都可以帮助我摆脱这个问题吗?

2 个答案:

答案 0 :(得分:1)

在我对转换器进行了以下检查后,它的工作正常。

 if (values[0] == DependencyProperty.UnsetValue)
            {
                //do domething
            }

第一次调用转换器时,传递的值是

> DependencyProperty.UnsetValue

当再次调用它时,值正在正确传递。所以这些东西对我有用。

答案 1 :(得分:-1)

if(!(values[0] is string))
    return null;

这对我有用

相关问题