Я закончил тем, что изменил установщик свойства, чтобы он изменил значение:
private decimal percentOfSale;
public decimal PercentOfSale
{
get
{
return percentOfSale;
}
set
{
percentOfSale = value / 100;
RaisePropertyChangedEvent("PercentOfSale");
}
}
Таким образом, мой XAML становится:
<TextBox Text="{Binding PercentOfSale, Mode=TwoWay, StringFormat=p}"/>
, и когда я загружаю свою модель, у меня есть:
this.percentOfSale = Model.PercentOfSale;
обратите внимание на нижний регистр "p" - это позволяет избежать масштабирования при начальной настройке, так что StringFormat
в привязке работает правильно, а когда значение устанавливается из пользовательского интерфейса, оно также масштабируется.
Затем, когда я хочу сохранить данные, которые у меня есть:
Model.PercentOfSale = this.percentOfSale;
Я обнаружил, что проценты хранятся в виде значений от 0 до 100 (не от 0 до 1) - этоне моя модель данных, и я должен был сначала проверить, поэтому это означает, что мне нужно масштабировать значение при начальной настройке:
this.PercentOfSale = Model.PercentOfSale;
Обратите внимание на верхний регистр "P".
и при сохранении:
Model.PercentOfSale = this.percentOfSale * 100;
, чтобы привести его в соответствие с данными, хранящимися в базе данных.