C# DependencyProperty'时绑定源未更新;s值设置为空

C# DependencyProperty'时绑定源未更新;s值设置为空,c#,uwp,binding,C#,Uwp,Binding,我有一个自定义用户控件。它由一个文本框和一个按钮组成。此用户控件的目标是允许用户查看对象的ToString()内容,该内容通过绑定在XAML中设置,还允许用户将对象设置为NULL。 这是UserControl的XAML和C代码 <UserControl <Grid> <TextBox Text="{x:Bind SelectedObject.ToString(), Mode=OneWay}" IsReadOnly="True" />

我有一个自定义用户控件。它由一个文本框和一个按钮组成。此用户控件的目标是允许用户查看对象的ToString()内容,该内容通过绑定在XAML中设置,还允许用户将对象设置为NULL。 这是UserControl的XAML和C代码

<UserControl
    <Grid>
        <TextBox Text="{x:Bind SelectedObject.ToString(), Mode=OneWay}" IsReadOnly="True" />
        <Button Click="buttonDeselectObject_Click" IsEnabled="True" Content="X"/>
    </Grid>
</UserControl>
这是我在UWP页面中使用它的方式:

<local1:ObjectSelectorBox SelectedObject="{x:Bind TestObject, Mode=TwoWay}"/>

当用户按下按钮时,SelectedObject值应设置为null。虽然这确实有效,但更改不会反映到绑定源TestObject(string)。 但是,当我将SelectedObject值设置为“123”或“abc”等其他值时,更改会正确地反映到TestObject。 这种行为是故意的吗?是否有办法将其更改为SelectedObject始终反映到绑定源

DependencyProperty的值设置为null时绑定源未更新

Iuri Farenzena的评论是正确的,当使用null对象调用
ToString()
时,它会失败。为什么我们不能在VisualStudio中获得异常。因为异常已在内部捕获并停止向绑定源反射

根据您的要求,请使用
string.Empty
替换null

SelectedObject = string.Empty
更新

Op的解决方案


实现自定义的
IValueConverter
,并使用
value?.ToString()
确定值是否为null。

您的绑定尝试对null对象调用.ToString(),然后失败。哦。哇!我没有意识到这一点。我已经习惯了用visualstudio来喂养我。唉。无论如何,非常感谢你:非常感谢你的澄清。我最终实现了一个定制的IValueConverter,它不提供值?.ToString()。
SelectedObject = string.Empty