Я работаю над простым приложением UWP. Я хочу, чтобы пользователь мог ввести какое-то денежное значение, в данном случае почасовую ставку. Тип данных десятичный. Вот свойство из модели представления:
private decimal hourly;
public decimal Hourly
{
get => salaryConvUS.Hourly;
set
{
Set(ref hourly, value); //Template10 method
salaryConvUS.Hourly = hourly;
}
}
А вот код XAML:
<TextBox x:Name = "HourlyTextBox"
Text = "{x:Bind ViewModel.Hourly, Mode=TwoWay}"
Style = "{StaticResource CommonTextboxStyle}" />
Мне кажется, что это довольно прямолинейно, но я получаю сообщение об ошибке:
App.InitializeComponent.AnonymousMethod__3_0(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)"
в файле App.g.i.cs. Я искал эту ошибку, но то, что я нашел, не применимо к этой ситуации.
Единственное, что может иметь какое-то отношение к этому, — это проблема, которая, как я знаю, была у приложений Windows 8, заключающаяся в том, что вы не могли привязать что-то вроде текстового поля к десятичному типу данных. Вы должны были сделать какое-то преобразование. Это то, что происходит здесь, в UWP?





TextBlock содержит строковое значение. Таким образом, вы не можете напрямую связать десятичное значение с TextBlock.
Используйте метод ToString() для правильной привязки.
Вы можете использовать что-то вроде этого -
private string hourly;
public string Hourly
{
//Your Algorithm
}
На моей машине всплывающая подсказка говорит, что я не могу присвоить десятичное значение строковому контейнеру. Поэтому я подумал, что это может быть проблема с кастингом. В любом случае, рад узнать, что это работает!
Спасибо, Махмудал. Хотя я думаю, что проблема связана с десятичным типом данных. Привязка UWP, похоже, не нравится. Я попытался изменить Hourly на float - это сработало. Но ваше решение тоже сработает.