有人能告诉我FallbackValue和TargetNullValue的确切区别吗?我知道它们是非常相似的,但是我想更多地了解那些想要使用的边缘用法,无论是使用两个中的一个还是使用使用两个中的一个都有意义。
干杯!
发布于 2022-09-06 10:46:58
基本上,
FallbackValue是在绑定本身设置为fails.TargetNullValue时设置的,而绑定的源是null.这些是我在WinUI 3中得到的结果。
平原结合
public string TestText { get; set; } = "Binding succeeded!";<TextBlock Text="{x:Bind TestText}" />
OR
<TextBlock Text="{Binding TestText}" />TextBlock显示“绑定成功”。
Case#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在编译时检查源代码。
Case#2
x:Bind,FallbackValue,空源
public string? TestText { get; set; } = null;<TextBlock Text="{x:Bind TestText, FallbackValue='Binding failed!'}" />TextBlock没有显示任何东西(空)。
Case#3
Binding,FallbackValue,名字不对
public string TestText { get; set; } = "Binding successed!";<TextBlock Text="{Binding Test, FallbackValue='Binding failed!'}" />TextBlock显示FallbackValue“绑定失败!”。
Case#4
x:Bind,TargetNullValue,空源
public string? TestText { get; set; } = null;<TextBlock Text="{x:Bind TestText, TargetNullValue='Source is null!'}" />TextBlock显示TargetNullValue "Source!“。
Case#5
Binding,TargetNullValue,空源
public string? TestText { get; set; } = null;<TextBlock Text="{Binding TestText, TargetNullValue='Source is null!'}" />TextBlock没有显示任何东西(空)。
Case#6
Binding,FallbackValue,TargetNullValue,空源
public string? TestText { get; set; } = null;<TextBlock Text="{Binding TestText, FallbackValue='Binding failed!', TargetNullValue='Source is null!'}" />TextBlock显示FallbackValue“绑定失败!”。
Case#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 "Source!“。
Case#8
x:Bind/Binding,TargetNullValue,空ViewModel
public ViewModel? ViewModel { get; set; } = null;<TextBlock Text="{x:Bind ViewModel.TestText, TargetNullValue='Source is null!'}" />TextBlock没有显示任何东西(空)。
Case#9
x:Bind/Binding,FallbackValue,空ViewModel
public ViewModel? ViewModel { get; set; } = null;<TextBlock Text="{x:Bind ViewModel.TestText, FallbackValue='Binding failed!'}" />TextBlock显示FallbackValue“绑定失败!”。
https://stackoverflow.com/questions/73619734
复制相似问题