Итак, я создал пользовательский элемент управления в .net MAUI XAML с привязываемыми свойствами.
Во-первых, я хочу отображать % в качестве суффикса после текста определенное представление, но StringFormat не отображает его.
Мой элемент View
Мой код
public static readonly BindableProperty PercentProperty = BindableProperty.Create(nameof(Percent), typeof(string), typeof(StatsControl),
propertyChanged: (bindable, oldValue, newValue) => {
var control = (StatsControl)bindable;
control.PercentEntry.Text = newValue as string;
});
public string Percent
{
get => GetValue(PercentProperty) as string;
set => SetValue(PercentProperty, value);
}
Фактическое значение представлено правильно и работает нормально. Но никакой другой текст я не помещаю в StringFormat ни до, ни после отображения значения!
Изменить:
После долгих исследований я до сих пор не могу заставить это работать со StringFormat< /code>, поэтому единственный способ обойти это - жестко запрограммировать символ процента там, где он мне нужен.
Мой пользовательский элемент управления полностью
Код элемента управления
public partial class StatsControl : ContentView
{
public static readonly BindableProperty CorrectProperty = BindableProperty.Create(nameof(Correct), typeof(int), typeof(StatsControl),
propertyChanged: (bindable, oldValue, newValue) => {
var control = (StatsControl)bindable;
control.CorrectEntry.Text = newValue.ToString();
});
public int Correct
{
get => (int)GetValue(CorrectProperty);
set
{
SetValue(CorrectProperty, value);
//OnPropertyChanged(nameof(Correct));
}
}
public static readonly BindableProperty WrongProperty = BindableProperty.Create(nameof(Wrong), typeof(int), typeof(StatsControl),
propertyChanged: (bindable, oldValue, newValue) => {
var control = (StatsControl)bindable;
control.WrongEntry.Text = newValue.ToString();
//control.WrongEntry.Text = String.Format(newValue as string, "{0}");
});
public int Wrong
{
get => (int)GetValue(WrongProperty);
set => SetValue(WrongProperty, value);
}
public static readonly BindableProperty PercentProperty = BindableProperty.Create(nameof(Percent), typeof(int), typeof(StatsControl),
propertyChanged: (bindable, oldValue, newValue) => {
var control = (StatsControl)bindable;
//control.PercentEntry.Text = (newValue as string) + "%";
control.PercentEntry.Text = String.Format("{0}%", newValue);
});
public int Percent
{
get => (int)GetValue(PercentProperty);
set => SetValue(PercentProperty, value);
}
public static readonly BindableProperty TitleProperty = BindableProperty.Create(nameof(Title), typeof(string), typeof(StatsControl),
propertyChanged: (bindable, oldValue, newValue) => {
var control = (StatsControl)bindable;
control.TitleLabel.Text = newValue as string;
});
public string Title
{
get => GetValue(TitleProperty) as string;
set
{
SetValue(TitleProperty, value);
}
}
public StatsControl()
{
InitializeComponent();
}
}
Как я использую этот элемент управления
Как установить значения в ViewModel страницы
#region Properties - Addition
[ObservableProperty]
int additionCorrect;
[ObservableProperty]
int additionWrong;
[ObservableProperty]
int additionPercentage;
#endregion
//...
AdditionCorrect = await SumCorrect(MathOperator.Add);
AdditionWrong = await SumWrong(MathOperator.Add);
AdditionPercentage = Helpers.CalculatePercent(AdditionCorrect, AdditionWrong);
OnPropertyChanged(nameof(AdditionCorrect));
OnPropertyChanged(nameof(AdditionWrong));
OnPropertyChanged(nameof(AdditionPercentage));
Подробнее здесь: https://stackoverflow.com/questions/780 ... ional-text
StringFormat для привязываемого свойства, не отображающего дополнительный текст ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
StringFormat для привязываемого свойства, не отображающего дополнительный текст
Anonymous » » в форуме C# - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-