silverlight-更改属性上的值已更改
我有一个绑定到名为Amount的十进制属性的文本框,还有一条业务规则,该规则规定Amount值不能大于100。 这是使用正确的MVVM和INotifyPropertyChanged事件设置的silverlight-更改属性上的值已更改,silverlight,binding,textbox,inotifypropertychanged,Silverlight,Binding,Textbox,Inotifypropertychanged,我有一个绑定到名为Amount的十进制属性的文本框,还有一条业务规则,该规则规定Amount值不能大于100。 这是使用正确的MVVM和INotifyPropertyChanged事件设置的 <TextBox Text="{Binding Amount, Mode=TwoWay, StringFormat=N2}" /> 问题是,无论我抛出INotifyPropertyChangedEvent多少次,这个新值都不会显示在文本框中 我尝试在TexBbox的LostFocus事
<TextBox Text="{Binding Amount, Mode=TwoWay, StringFormat=N2}" />
问题是,无论我抛出INotifyPropertyChangedEvent多少次,这个新值都不会显示在文本框中
我尝试在TexBbox的LostFocus事件上抛出INotifyPropertyChanged事件,但这使该值重置为originalunedited值。这是因为此事件发生在值到达属性设置器之前
有人能给我建议一种方法,让修改后的值正确显示吗?将UpdateSourceTrigger属性添加到文本框中
<TextBox Text="{Binding Amount, Mode=TwoWay, StringFormat=N2, UpdateSourceTrigger=LostFocus}" />
我终于成功了。我没有在setter中重置值,而是处理对象的PropertyChangedEvent并在那里重置值 令人沮丧的是,这个解决方案在调试期间不起作用,但一旦发布就可以正常工作
感谢所有响应者。当我这样做时,用户会遇到一些奇怪的光标重新定位。例如,如果他们键入“1234”,则结果为“3412”,因为在他们键入时光标会重新定位到文本的开头。一旦用户键入3,则会在setter中命中if语句。尝试使用LostFocus作为属性的值,而不是PropertyChanged。我不太明白你的意思。我已尝试在lostFocus事件期间引发NotifyPropertyChange,但这会阻止用户更改值。我使用更新的UpdateSourceTrigger值编辑了答案。在字段中键入值1234并且字段失去焦点后,将调用setter。在Silverlight中,失去焦点不是有效选项。无论如何,谢谢你,我确实设法让它工作了。它在发布时的行为与在调试中运行时的行为不同。
<TextBox Text="{Binding Amount, Mode=TwoWay, StringFormat=N2, UpdateSourceTrigger=LostFocus}" />