我正在尝试找到一种方法来暂停对TextBox
控件的更新,使其在具有焦点时不受绑定,并且当用户按下Enter键时仍能够使用UpdateSource()
更新源代码。一些solutions建议暂停源PropertyChangedEvent
,但在我的情况下,值绑定到多个控件,我不想暂停它们更新。
其他一些人也建议从控件中删除绑定,但是会重置TextBox
的值(我希望Text
属性保持不变),当我再次设置绑定时,它也会首先发送{{1因为设置绑定也会清除属性值。
在FallbackValue
我通过以下代码完成了这个场景:
WinForms
如何在WPF中重新创建此功能?
修改:
也许我不清楚。我的目标是使用TwoWay绑定,对源进行显式更新,并在控件具有焦点时从源“暂停”更新。
答案 0 :(得分:0)
试试这个,但我不确定它是否能满足需求。如果出现焦点,它将从您放入文本框中的文本更新您的属性。
<TextBox>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Text" Value="{Binding Zmienna, Mode=OneWay}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsFocused}" Value="True">
<Setter Property="Text" Value="{Binding Zmienna, Mode=OneWayToSource}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>