.net - 实现自定义绑定(bind)

标签 .net wpf binding

我有一个包含标签 label 和 BO public Person Person {get;set;}MyUserControl

我希望 Person 的 Name 始终绑定(bind)到 label,如下所示:

("Name: {0}", person.Name),如果 person != null

("Name: {0}", "(none)"),如果 person == null

不仅如此,如果人名更改,标签会自动更新。

是否有可能进行这样的绑定(bind)

“脏”变体:

private void label_LayoutUpdated(object sender, EventArgs e)
{
    label.Content = string.Format("Name: {0}", _Person == null ? 
                                                      "(none)" : _Person.Name);
}

最佳答案

怎么样:

    <StackPanel Orientation="Horizontal">
        <TextBlock Text="Name: "/>
        <TextBlock Text="{Binding Person.Name, FallbackValue='(none)'}"/>
    </StackPanel>

这不使用标签,但它实现了目标。


如果它需要是一个标签,你可以这样做:

    <Label Content="{Binding Person.Name, FallbackValue='(none)'}" 
           ContentStringFormat="Name: {0}"/>

这两种方法的一个警告是,如果绑定(bind)不正确,文本还将显示 Name: (none)(Person == null 等同于未找到属性 Person 的行为)。

关于.net - 实现自定义绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320051/

相关文章:

c# - 你如何在 C# 和 MVVM 中实现异步操作?

c# - StringBuilder 与 StringWriter/StringReader

c# - 打开的文件太多(Ubuntu 上的 Mono .NET)

c# - toTitleCase 忽略 C# 中的序数

c# - 从 gridview 插入数据时处理 'NULL' 和键约束

.net - 有谁知道为什么标准框架引用上可能会出现 "manifest definition does not match the assembly reference"错误?

wpf - 如何设置 WPF 日历中 BlackoutDates 的样式

wpf - 将文本插入 WPF 文本框中的插入符号位置

c# - 来自 TreeView 控件的绑定(bind)错误

.net - 在 WPF 绑定(bind)中撤消