xaml中的条件元素取决于绑定内容

是否可以显示此TextBlock,仅当Address.Length > 0 ? 我想直接在xaml中执行此操作,我知道我可以以编程方式放置所有控件

   

基本上,您将需要编写IValueConverter以便可以将TextBoxVisibility属性绑定到Address字段或您创建的新字段。

如果你绑定到Address字段,这里的绑定可能是这样的::

  

然后StringLengthVisiblityConverter看起来像这样:

 public class StringLengthVisiblityConverter: IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null || value.ToString().Length == 0) { return Visibility.Collapsed; } else { return Visibility.Visible; } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { // Don't need to implement this } } 

然后你只需要将转换器作为资源添加,使用这样的语法(其中src映射到定义转换器的命名空间):

  

我会使用另一个名为HasAddress布尔属性来执行此操作,该属性返回Address.Length > 0

    

您还应该记得在Address设置器中通知属性更改HasAddress

您可以创建StringToVisibility转换器。

如果绑定字符串is not null or empty ,它将返回Visibility.Visible如果is not null or empty ,则返回Visibility.Visible

在使用TextBlock Visibility属性绑定Address时使用此转换器。

例: