【发布时间】:2013-06-14 17:05:06
【问题描述】:
我有一个工作 OneWay DataBinding 从双 CLRProperty 到 Texttbox.Text. 我不使用 TwoWay 因为不是每个用户输入都是可以接受的。顺便说一句,我使用现有的 Command 来实现 ICommand 接口。
问题是,一旦用户在Textbox 中输入文本,Databinding 就会被破坏。
<TextBox Text="{Binding Path=myDouble, Converter={converter:DoubleToTextConverter}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
【问题讨论】:
-
你所说的“被摧毁”是什么意思?用户输入将至少覆盖源属性值,直到源以另一种方式再次更新,这是预期的行为。
-
ICommand与此有什么关系?此外,如果不是每个用户输入都有效,请使用Input Validation 的形式或忽略在属性setter中应用新的value? -
@Pragmateek 使用“destroyed”是指当源属性更新时,文本框中的文本不会更新。 (在用户更改文本之前它确实工作得很好)
-
@Viv。该命令已在程序中多次使用。我只是为用户添加了一种新的使用方式。所以我已经有了 CanExecute 函数,用于测试输入。
-
如果您在视图模型中使用带有双向绑定的字符串属性,使用 idataerrorinfo 验证输入并在将值设置为模型时强制转换为 double 会容易得多(这样您就可以摆脱转换器也是)。与 OneWay 模式绑定是“只读”的,因此您可以从源中更新文本。
标签: c# wpf data-binding command