可见性绑定

时间:2013-11-27 13:23:03

标签: wpf binding windows-store-apps

我遇到这种情况:

    <TextBlock x:Name="NoMonthDataTextBlock" 
                            Text="No data." 
                            Margin="20,10,0,0" 
                            Foreground="Black" 
                            FontWeight="Bold"
                            FontSize="20"
                            Visibility="{Binding SelectedSymbolItem.NoData, Converter={StaticResource FieldVisible}}"/>

<tools:BoolToVisibilityConverter x:Key="FieldVisible" TrueValue="Visible" FalseValue="Collapsed" />

public class BoolToVisibilityConverter : BoolToValueConverter<Visibility>
    {
    }

    public class BoolToValueConverter<T> : IValueConverter
    {
        public T FalseValue { get; set; }
        public T TrueValue { get; set; }

        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (value == null)
                return FalseValue;
            else
                return (bool)value ? TrueValue : FalseValue;
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            return value != null ? value.Equals(TrueValue) : false;
        }
    }

问题是当SelectedSymbolItem is null字段可见且我不希望这样。

我希望只有当SelectedSymbolItem不为null并且具有空数据时,此textBlock才可见。 我曾考虑使用Multibing,但我的目标是Windows应用商店应用(8.0),此处不支持。 (一个条件为非null,另一个条件为无数据。)

当SelectedSymbolItem为null时,如何使textBlock折叠?

1 个答案:

答案 0 :(得分:2)

放下一个倒塌的FallbackValue, 在你的情况下,这将工作在Visibility属性上会有一个Binding错误,它将采用提供的FallbackValue。

  <TextBlock x:Name="NoMonthDataTextBlock" 
                        Text="No data." 
                        Margin="20,10,0,0" 
                        Foreground="Black" 
                        FontWeight="Bold"
                        FontSize="20"
                        Visibility="{Binding SelectedSymbolItem.NoData,Converter={StaticResource FieldVisible},FallbackValue=Collapsed}"/>

  <tools:BoolToVisibilityConverter x:Key="FieldVisible" TrueValue="Visible" FalseValue="Collapsed" />