为什么数据绑定在单向模式突破?(Why does data binding break in One

2019-07-05 09:44发布

这里有一个小XAML片段。 你会看见

<StackPanel>
     <TextBox x:Name="txtValue">250</TextBox>
     <Slider x:Name="slide" 
             Value="{Binding ElementName=txtValue, Path=Text, 
                             Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" 
            Minimum="0" Maximum="500"></Slider>
</StackPanel>
  1. 当你改变文本框的值,滑块更新
  2. 如果您明确地更改滑块值,以前的行为打破又名停止工作。

如果我删除Mode=OneWay组指令,(默认为双向)一切完美。

这究竟是为什么?

Answer 1:

使用mode=TwoWay ,设置UpdateSourceTrigger=Explicit



Answer 2:

数据绑定未破,但停用( http://en.wikipedia.org/wiki/Euphemism ):

System.Windows.Data Warning: 75 : BindingExpression (hash=52697953): Deactivate
System.Windows.Data Warning: 99 : BindingExpression (hash=52697953): Replace item at level 0 with {NullDataItem}
System.Windows.Data Warning: 59 : BindingExpression (hash=52697953): Detach

设置跟踪到高将产生的情况下,VS输出窗口,这个消息您移动滑块:

<Slider xmlns:trace="clr-namespace:System.Diagnostics;assembly=WindowsBase"
        Value="{Binding trace:PresentationTraceSources.TraceLevel=High,
            ElementName=txtValue, Path=Text, Mode=OneWay,
            UpdateSourceTrigger=PropertyChanged}"
        Minimum="0" Maximum="500"></Slider>


文章来源: Why does data binding break in OneWay mode?