MultiBinding
両方のBindingフィールドがtrueと評価されたかどうかに応じて、コントロールの可視性を決定するコンバーターがあります。何らかの理由でこれらのブールプロパティのいずれにも到達できない場合は、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エラーが発生している場所であることを確認しました。ここでの無知について申し訳ありませんが、設定されたパスの取得に失敗したときに「true」と評価するために、FallbackValueをこれらの各バインディングに設定する方法はありますか?前もって感謝します
アップデート:
これが私のVisibilityConverterのコードです(これはアプリ全体のいくつかの場所で使用していますが、フォールバック値を追加したいだけです):
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();
}
}