UWP和WinUI3中FallbackValue和TargetNullValue有什么区别?

问题描述 投票:0回答:1

有人可以告诉我

FallbackValue
TargetNullValue
之间的确切区别吗?我知道它们非常相似,但我想更多地了解您想要使用 两者之一 的边缘用例,或者可能是 使用两者 有意义的用例。

干杯!

xaml uwp winui-3 winui
1个回答
4
投票

基本上,

  • FallbackValue
    当绑定本身失败时设置。
  • 当绑定源为
  • null
     时设置 
    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
“绑定失败!”。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.