Я хочу привязать текстовое поле к doule на моей виртуальной машине. в XAML у меня есть это:
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,5">
<Binding Path="Offset" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" StringFormat="{}{0:F2}}">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
и на VM у меня это:
public double Offset
{
get
{
return this.offset;
}
set
{
if (value <= 0)
{
throw new Exception("Not Valid!");
}
this.offset = value;
this.NotifyOfPropertyChange(() => this.Offset);
}
}
Но когда я устанавливаю значение Offset на vm, ничего не отображается на экране.
Если я удалю строковый формат, я получаю подходящий дисплей в представлении.
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,5">
<Binding Path="Offset" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" >
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
Как я могу иметь как stringformat, так и также устанавливать смещение на VM?
В конце концов вы получите дополнительный }
, измените это на:
StringFormat="{}{0:F2}"
(это, вероятно, осталось во время копирования из-за чего-то вроде <TextBox Text="{Binding Offset, StringFormat={}{0:F2}}"/>
)