xaml中的条件元素取决于绑定内容
是否可以显示此TextBlock,仅当Address.Length > 0
? 我想直接在xaml中执行此操作,我知道我可以以编程方式放置所有控件
基本上,您将需要编写IValueConverter
以便可以将TextBox
的Visibility
属性绑定到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
时使用此转换器。
例: