如何在WP7 Silverlight中获取XAML TextBlock,以便在不包含数据时崩溃?

时间:2012-02-29 22:51:30

标签: silverlight windows-phone-7

我在列表视图中有一个文本块,当它为空或空时我需要隐藏或折叠。我尝试使用字符串转换器但是没有这样做。

还有其他想法吗?

更新#1: 这是文本块中的代码:

Visibility="{Binding Converter={StaticResource StringConverter}}

这是转换器:

public class StringConverter : IValueConverter
  {
      public object Convert(object value, Type targetType, object parameter,
        CultureInfo culture)
      {
          return string.IsNullOrEmpty(value.ToString()) ? Visibility.Collapsed : Visibility.Visible;
      }

      public object ConvertBack(object value, Type targetType, object parameter,
      CultureInfo culture)
      {
          return DependencyProperty.UnsetValue;
      }

  }

2 个答案:

答案 0 :(得分:1)

我建议在文本框中创建文本和可见性绑定。

以下是您拥有的视图模型属性的示例。

public String TextBoxText
{
    get { return textBoxText; }
    set
    {
        if (value != textBoxText)
        {
            textBoxText= value;
            SetTextBoxVisibility();
            OnPropertyChanged("TextBoxText");
        }
    }
}
private String textBoxText;

public Visibility TextBoxVisibility
{
    get { return textBoxVisibility; }
    set
    {
        if (value != textBoxVisibility)
        {
            textBoxVisibility= value;
            OnPropertyChanged("TextBoxVisibility");
        }
    }
}
private Visibility textBoxVisibility;

public void SetTextBoxVisibility()
{
    this.TextBoxVisibility = String.IsNullOrEmpty(this.TextBoxText) ? Visibility.Collapsed : Visibility.Visible;
}

答案 1 :(得分:0)

您没有展示代码的唯一方法是实例化转换器类。这是因为你没有这样做吗?

通常你会在app.xaml上添加这样的东西:

<Application.Resources>
    <ResourceDictionary>
        <conv:StringConverter x:Key="StringConverter " />
    </ResourceDictionary>
</Application.Resources>