ValueFormattingConverter.Convert
调用 XmlElement
。永远不会调用ConvertBack
。为什么?是否有义务将绑定指令传递给链? TextBox的使用是否覆盖了自己的绑定设置?可以做些什么?
我的文字框
<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
,通过此TextBox
构建ControlChooser
,传递绑定。
<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 =。不支持双向绑定。我相信这是问题的正确答案。知道很有帮助,但是&#34;不能这样做&#34;没有解决更大的问题。所以我在这里提出了一个更大的问题:Means of generating an editable form from XML。
答案 0 :(得分:8)
绑定方向到源不适用于{Binding Path=.}
。这是因为没有绑定属性,只是绑定源对象。
因此永远不会有源更新,并且永远不会调用ConvertBack
方法,因为这意味着要替换源对象。
为了使您的代码有效,您必须绑定到某个属性:
<TextBox Text="{Binding Path=SomeElement, ...}"/>