Wpf 使用源代码初始值的双向绑定

Wpf 使用源代码初始值的双向绑定,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,我想在XAML中设置一个绑定,它可以像双向绑定一样从源或目标进行更新。但是当应用DataContext时,我希望初始值像OneWayToSource绑定一样从目标获取 如何设置此绑定,使文本框文本从DataContext的Memo属性更新,反之亦然,但连接的初始值从文本框文本获取?只需不为Memo属性赋值即可。默认情况下,TextBox.Text的值为null 您可以设置绑定.TargetNullValue以设置默认值: <TextBox Text="{Binding Memo, Tar

我想在XAML中设置一个绑定,它可以像双向绑定一样从源或目标进行更新。但是当应用DataContext时,我希望初始值像OneWayToSource绑定一样从目标获取


如何设置此绑定,使文本框文本从DataContext的Memo属性更新,反之亦然,但连接的初始值从文本框文本获取?

只需不为
Memo
属性赋值即可。默认情况下,
TextBox.Text
的值为
null

您可以设置
绑定.TargetNullValue
以设置默认值:

<TextBox Text="{Binding Memo, TargetNullValue=TextBox default unset value}" />


回答得很好,但TextBox并不是我想在这里使用的唯一控件。我希望在DatePicker的文本字段中使用此选项,以防止DatePicker从绑定到文本的ViewModel中获取空字符串并将其应用于DateTime值。这是一个特定于框架的示例,所以我不考虑它。我认为您在这里有一些选择。您也可以在
DatePicker
的绑定上设置
Binding.TargetNullValue
,以设置默认值。您可以将绑定源的值“视图模型”属性设置为合理的非空值,例如
string.Empty
。因此,两个控件
DatePicker
TextBox
都将获取非空的初始化值。我不知道
日期选择器
将如何处理
字符串。空的
值。您可以使用
IValueConverter
将字符串从
文本框
(或绑定视图模型字符串属性)转换为有效的
日期选择器
值,例如
日期时间
,也给您处理特殊问题的机会(输入)值,如
null
或空字符串或空格,例如,通过将它们转换为
DateTime.Now
(这可能是
日期选择器的一个非常合理的默认值
)。在DatePicker文本属性上设置任何静态值都会导致该属性使用该日期设置值字段。如果将文本设置为null或任何有效值,则实际上会更改为DatePicker设置的日期。我们希望该值返回到属性的当前值。这适用于OneWayToSource,但此处需要双向绑定(TwoWayToSource是完美的,但不受支持)。我明白了。那么唯一的解决方案就是实现一个
IValueConverter
,并将其分配给
Binding。Converter
属性是
DatePicker
视图模型绑定。在这里,您可以完全控制分配给目标的值。如果该值根据您的定义无效,您只需返回
Binding即可.DoNothing
。这将丢弃新的但无效的绑定值,例如
null
,而您的
DatePicker
将保留当前值。绑定目标没有更改。我希望我的回答正确。