假設我有ControlA,在代碼隱藏中我有一些屬性PropertyA,它們是可系結屬性的實體屬性。我想將它們的值引導到在 XAML 中宣告的PropertyB控制ControlB中。
現在我可以像這樣系結到屬性:
<ContentView
...
x:Name="Self">
<ContentView.Content>
<ControlB
x:Name="ConB"
PropertyB="{Binding Source={x:Reference Self}, Path=PropertyA}/>
</ContentView.Content>
</ContentView>
或者像這樣在后面的代碼中:
protected override void OnPropertyChanged(string propertyName = null)
{
if(propertyName == nameof(PropertyA)
{
ConB.PropertyB = PropertyA;
}
}
其中一種方法比另一種更好嗎?
uj5u.com熱心網友回復:
我更喜歡第一種情況。
原因:將代碼放在適用的地方,而不是集中在需要
if ... elseif ...
那會變得凌亂。
如果你正在尋找XAML的ControlB,沒有任何跡象表明,你也需要去看看的cs檔案,OnPropertyChanged方法,了解哪些因素會影響它。
我唯一會考慮的情況是,如果它是一個難以用XAML. 例如,如果它取決于某些其他條件:
if (someSpecialFlag && ... nameof(PropertyA)) ...
在這種情況下,我會在 cs 代碼隱藏檔案的頂部放置一個突出的注釋,提醒任何必須維護代碼的人在OnPropertyChanged.
它也值得研究Triggers,作為表示XAML.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402157.html
標籤:C# xaml xamarin.forms
