TextBox ConvertBack事件不会触发XML元素

时间:2015-06-22 18:16:33

标签: wpf

使用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

1 个答案:

答案 0 :(得分:8)

绑定方向到源不适用于{Binding Path=.}。这是因为没有绑定属性,只是绑定源对象。

因此永远不会有源更新,并且永远不会调用ConvertBack方法,因为这意味着要替换源对象。

为了使您的代码有效,您必须绑定到某个属性:

<TextBox Text="{Binding Path=SomeElement, ...}"/>