有人可以告诉我
FallbackValue
和TargetNullValue
之间的确切区别吗?我知道它们非常相似,但我想更多地了解您想要使用 两者之一 的边缘用例,或者可能是 使用两者 有意义的用例。
干杯!
基本上,
FallbackValue
当绑定本身失败时设置。时设置
TargetNullValue
。这些是我使用 WinUI 3 得到的结果。
平装
public string TestText { get; set; } = "Binding succeeded!";
<TextBlock Text="{x:Bind TestText}" />
OR
<TextBlock Text="{Binding TestText}" />
TextBlock
显示“绑定成功”。
案例#1
x:Bind
,FallbackValue
/TargetNullValue
,名字错误
public string? TestText { get; set; } = "Binding succeeded!";
<TextBlock Text="{x:Bind Test, FallbackValue='Binding failed!'}" />
OR
<TextBlock Text="{x:Bind Test, TargetNullValue='Source is null!'}" />
您会收到编译错误,因为
x:Bind
在编译时检查源代码。
案例#2
x:Bind
,FallbackValue
,空源
public string? TestText { get; set; } = null;
<TextBlock Text="{x:Bind TestText, FallbackValue='Binding failed!'}" />
TextBlock
什么也没显示(空)。
案例#3
Binding
,FallbackValue
,名字错误
public string TestText { get; set; } = "Binding successed!";
<TextBlock Text="{Binding Test, FallbackValue='Binding failed!'}" />
TextBlock
显示FallbackValue
“绑定失败!”。
案例#4
x:Bind
,TargetNullValue
,空源
public string? TestText { get; set; } = null;
<TextBlock Text="{x:Bind TestText, TargetNullValue='Source is null!'}" />
TextBlock
显示TargetNullValue
“源为空!”。
案例#5
Binding
,TargetNullValue
,空来源
public string? TestText { get; set; } = null;
<TextBlock Text="{Binding TestText, TargetNullValue='Source is null!'}" />
TextBlock
什么也没显示(空)。
案例#6
Binding
、FallbackValue
、TargetNullValue
、空源
public string? TestText { get; set; } = null;
<TextBlock Text="{Binding TestText, FallbackValue='Binding failed!', TargetNullValue='Source is null!'}" />
TextBlock
显示FallbackValue
“绑定失败!”。
案例#7
x:Bind
、FallbackValue
、TargetNullValue
、空源
public string? TestText { get; set; } = null;
<TextBlock Text="{x:Bind TestText, FallbackValue='Binding failed!', TargetNullValue='Source is null!'}" />
TextBlock
显示TargetNullValue
“源为空!”。
案例#8
x:Bind
/Binding
、TargetNullValue
、空ViewModel
public ViewModel? ViewModel { get; set; } = null;
<TextBlock Text="{x:Bind ViewModel.TestText, TargetNullValue='Source is null!'}" />
TextBlock
什么也没显示(空)。
案例#9
x:Bind
/Binding
、FallbackValue
、空ViewModel
public ViewModel? ViewModel { get; set; } = null;
<TextBlock Text="{x:Bind ViewModel.TestText, FallbackValue='Binding failed!'}" />
TextBlock
显示FallbackValue
“绑定失败!”。