在文件浏览器控件中
故障排除依赖关系绑定
>>在构建自定义文件浏览器控件时,出现了一个常见问题,其中选择文件会更新控件的内部文本框,但未能将更改传播到父级视图模型中的SelectedFile
和标准绑定也会发生。DependencyProperty
>
设置为其构造函数: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中文网其他相关文章!