【问题标题】:How can you get a XAML TextBlock in WP7 Silverlight to collapse when it contains no data?当 WP7 Silverlight 中的 XAML TextBlock 不包含数据时,如何使其折叠?
【发布时间】:2012-02-29 22:51:29
【问题描述】:

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

还有其他想法吗?

更新#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;
      }

  }

【问题讨论】:

  • 请出示您的代码。是否可以在绑定之前过滤数据源?
  • 发布代码后,我意识到我的错误。谢谢大家的回答。这是代码 Visibility="{Binding Description, Converter={StaticResource StringConverter}}

标签: silverlight windows-phone-7


【解决方案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;
}

【讨论】:

  • 您为什么建议通过转换器执行此操作?只有在使用转换器的性能影响影响整体性能时,我才会这样做。通常还有很多其他的事情会影响性能,并且可以在没有为每个使用这种转换器的地方创建额外属性的开销的情况下进行改进。但我很想听听你的推理。
  • 问得好,我们很早就开始使用转换器,但我们很快发现通过利用 MVVM 模式,我们的成员变得更容易进行单元测试并且调试更直观,这与许多通用转换器相反我们已经创建了。
【解决方案2】:

您的代码中唯一没有显示的是您实例化转换器类的位置。这是因为你没有这样做吗?

通常您会在 app.xaml 中添加类似这样的内容:

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

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多