我有一个标签控件,其中有多个标签项。我正在尝试将多值转换器应用于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。任何人都可以帮助我摆脱这个问题吗?
答案 0 :(得分:1)
在我对转换器进行了以下检查后,它的工作正常。
if (values[0] == DependencyProperty.UnsetValue)
{
//do domething
}
第一次调用转换器时,传递的值是
> DependencyProperty.UnsetValue
当再次调用它时,值正在正确传递。所以这些东西对我有用。
答案 1 :(得分:-1)
if(!(values[0] is string))
return null;
这对我有用