FallbackValue有人可以告訴我和之間的確切區別TargetNullValue嗎?我知道它們非常相似,但我想更多地了解那些你想使用兩者之一的邊緣用例,或者可能同時使用兩者都有意義的用例。
干杯!
uj5u.com熱心網友回復:
基本上,
FallbackValue當系結本身失敗時設定。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源為空!”。
Case#5
Binding , TargetNullValue, 空源
public string? TestText { get; set; } = null;
<TextBlock Text="{Binding TestText, TargetNullValue='Source is null!'}" />
TextBlock什么都沒有顯示(空的)。
Case#6
Binding , FallbackValue, TargetNullValue, null 源
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, null 源
public string? TestText { get; set; } = null;
<TextBlock Text="{x:Bind TestText, FallbackValue='Binding failed!', TargetNullValue='Source is null!'}" />
顯示TextBlock“TargetNullValue源為空!”。
Case#8
x:Bind / Binding, TargetNullValue, null ViewModel
public ViewModel? ViewModel { get; set; } = null;
<TextBlock Text="{x:Bind ViewModel.TestText, TargetNullValue='Source is null!'}" />
TextBlock什么都沒有顯示(空的)。
Case#9
x:Bind / Binding, FallbackValue, null ViewModel
public ViewModel? ViewModel { get; set; } = null;
<TextBlock Text="{x:Bind ViewModel.TestText, FallbackValue='Binding failed!'}" />
顯示TextBlock“FallbackValue系結失敗!”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506315.html
