ValueFormattingConverter.Convert
使用 XmlElement
调用。 ConvertBack
永远不会被调用。为什么?是否有义务将具有约束力的指令向下传递到链中? TextBox 的使用是否覆盖了它自己的绑定(bind)设置?可以做什么?
我的文本框
<TextBox Width="200"
Text="{Binding Path=., Converter={StaticResource valueFormattingConverter}}",
Mode=TwoWay,
NotifyOnSourceUpdated=True,
NotifyOnValidationError=True,
UpdateSourceTrigger=PropertyChanged}" />
用法相当复杂。从顶部开始,我们为选项卡提供了一个 XML 元素。
<TabItem.DataContext>
<Binding Source="{StaticResource mcf}",
XPath="mdf/press_information"/>
</TabItem.DataContext>
该选项卡包含一个 ItemsControl
,它通过传递绑定(bind)的 ControlChooser
构建 TextBox
es。
<ItemsControl.ItemTemplate>
<DataTemplate>
<W3V:ControlChooser RelativeSource="{RelativeSource AncestorType=W3V:ObjectList}",
Content="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
我的转换器类标题。转换方法被调用。 ConvertBack 从不。
[ValueConversion(typeof(XmlElement), typeof(string))]
public class ValueFormattingConverter : IValueConverter
编辑:选择的答案基本上是 Path=。不支持双向绑定(bind)。我相信这是问题的正确答案。知道很有帮助,但“不能那样做”并不能解决更大的问题。所以我在这里提出了更大的问题:Means of generating an editable form from XML .
最佳答案
到源的绑定(bind)方向不适用于{Binding Path=.}
。这是因为没有绑定(bind)属性,只有绑定(bind)源对象。
因此永远不会有源更新,并且永远不会调用 ConvertBack
方法,因为那意味着替换源对象。
为了使您的代码正常工作,您必须绑定(bind)到某些属性:
<TextBox Text="{Binding Path=SomeElement, ...}"/>
关于wpf - 不会为 XML 元素触发 TextBox ConvertBack 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987019/