我有一个MultiBinding
转换器,它根据我的两个 Binding 字段是否都评估为 true 来确定控件的可见性。如果由于某种原因它无法达到这些布尔属性中的任何一个,我想将它们设置为评估为真。例如:
我目前拥有的代码是:
<MultiBinding Converter="{StaticResource AndToVisibilityConverter1}" FallbackValue="Visible">
<Binding Path="IsConnected" FallbackValue="true" />
<Binding Path="CurrentUser.IsConsumerOnlyAgent" Converter="{StaticResource InvertedBooleanConverter1}" FallbackValue="True" />
</MultiBinding>
代码运行良好,但是我在 IDE 的输出中收到错误消息,指示:
System.Windows.Data Error: 11 : Fallback value 'True' (type 'String') cannot be converted for use in 'Visibility' (type 'Visibility'). BindingExpression:Path=IsConnected; DataItem=null; target element is 'StackPanel' (Name='');
我已经确定了这个转换器并验证了它是 XAML 错误所在的位置。抱歉这里的无知,但是有没有办法将 FallbackValue 设置为这些绑定中的每一个,以便在无法获取设置路径时评估为“true”?提前致谢
更新:
这是我的可见性转换器的代码(我在整个应用程序的几个地方都使用了它,只是想添加回退值):
internal class AndToVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null)
return Visibility.Collapsed;
foreach (var value in values)
{
if (value == null || !(value is bool))
return Visibility.Collapsed;
if (!((bool) value))
return Visibility.Collapsed;
}
return Visibility.Visible;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}