我有一個XAML帶有C#代碼隱藏的檔案。
在C#類中我定義了一些屬性,然后我可以設定XAML:
public partial class MyClass : ContentView
{
public Color MyColor { get; set; }
public MyClass()
{
InitializeComponent()
//Here I want to use the color
}
}
<MyClass MyColor="Blue"/>
問題是該屬性從未設定。當我嘗試使用它時,它仍然具有默認值(白色)。
當我使用時也會發生同樣的情況BindableProperties:
public static readonly BindableProperty MyColorProperty = BindableProperty.Create(nameof(MyColor), typeof(Color), typeof(MyClass), Colors.White);
public Color MyColor
{
get => (Color)GetValue(MyColorProperty);
set => SetValue(MyColorProperty, value);
}
你應該怎么做?我想使用在此元素實體上設定的屬性 by XAML,但它不起作用。
uj5u.com熱心網友回復:
它可能有助于描繪 c# 代碼而不是 xaml。兩者是等價的。
如果您的組件的使用如下所示:
var c = new MyClass();
c.MyColor = Color.Blue;
那么在建構式期間 MyColor 的值是什么?
顯然,它仍然是白色的。
要查看藍色,請在任何方法覆寫中使用 MyColor。最常見的是OnAppearing:
protected override void OnAppearing()
{
base.OnAppearing();
// use MyColor here.
}
uj5u.com熱心網友回復:
解決方案是使用OnHandlerChanged. 經過一些實驗,我可以確認XAML在這個階段已經設定了屬性,并且每次都會呼叫它。
在代碼中,它看起來像這樣:
protected override void OnHandlerChanged()
{
base.OnHandlerChanged();
//Retrieve or use your properties
}
另一個建議的解決方案(如果您正在使用ContentPage)是方法OnAppearing。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482245.html
