我想将文本框绑定(bind)到VM上的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);
}
}
但是,当我在vm上将值设置为Offset时, View 上什么也没有显示。
如果删除字符串格式,则可以在View上获得合适的显示。
<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}}" />
之类的文件复制时遗留下来的)
关于c# - 定义stringformat时,TextBox不会更新其视觉效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23914262/