首页 >后端开发 >C++ >为什么我的依赖关系绑定不更新父viewModel?

为什么我的依赖关系绑定不更新父viewModel?

DDD
DDD原创
2025-02-01 17:21:09520浏览

Why Doesn't My DependencyProperty Binding Update the Parent ViewModel?

在文件浏览器控件中

故障排除依赖关系绑定

>

>在构建自定义文件浏览器控件时,出现了一个常见问题,其中选择文件会更新控件的内部文本框,但未能将更改传播到父级视图模型中的>属性。 即使使用SelectedFile和标准绑定也会发生。DependencyProperty>

根本原因通常源于将UserControl的

设置为其构造函数:DataContext

<code class="language-csharp">DataContext = this;</code>
这个自我引用

覆盖父母的遗传DataContext,打破了与父视图模型的绑定。DataContext

>

解决方案:利用bindingRelativeSource

该解决方案涉及修改USERCORTROL XAML中的绑定以明确针对父视图模型。 使用RelativeSource遍历视觉树:

<code class="language-xaml"><TextBox Text="{Binding SelectedFile, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" /></code>

此修订后的绑定确保USERCORTROL中的属性可以正确地绑定到父视图模型的SelectedFile属性,即使在内部设置了UserControl的SelectedFile时。 DataContext现在,当嵌入USERCONTROL时:

绑定将按预期运行,在文件选择时更新父视图模型的
<code class="language-xaml"><FileBrowserControl SelectedFile="{Binding SelectedFile}" /></code>
属性。

以上是为什么我的依赖关系绑定不更新父viewModel?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn