#c# #xamarin #binding #static #cross-platform
#c# #xamarin #привязка #статический #кроссплатформенный
Вопрос:
я хочу обновить метку статической строкой. Это мой фактический код
public partial class MainPage : INotifyPropertyChanged
{
private static String _uploadstring;
/// <summary>
/// A static property which you'd like to bind to
/// </summary>
public static String Uploadstring
{
get
{
return _uploadstring;
}
set
{
_uploadstring = value;
}
}
и я хочу вызвать ее с
Device.BeginInvokeOnMainThread(async () =>
{
Uploadstring = "TEEEEEEST";
});
вот моя привязка к XAML
<Label Text="{Binding Source={x:Staticlocal:MainPage.UploadString}}" x:Name="ttts" TextColor="Red" TranslationY="50" HeightRequest="30" FontSize="26" HorizontalOptions="Center"/>
Если я установлю точку останова, я увижу, что Uploadstring обновляется в моем XAML. Но он не отображает ее, потому что он не обновляет текст. Как я могу решить свою проблему?
Комментарии:
1. Где вы устанавливаете событие OnPropertyChanged своим ключом
Ответ №1:
как насчет вставки одной строки в Setter?
public static String Uploadstring
{
get
{
return _uploadstring;
}
set
{
_uploadstring = value;
Form.ttts.Text = _uploadstring; // This line (Modified)
}
}
если вам не нравится подобное использование, вам нужно привязать ее в режиме Twoway
Добавлено
Добавьте это для использования статического метода
public static MainPage Form { get; set; } // This Line
public MainPage()
{
InitializeComponent();
Form = this; // And This Line
}