gpt4 book ai didi

wpf - 将标题复选框绑定(bind)到用户控件的数据上下文的更好方法是什么?

转载 作者:行者123 更新时间:2023-12-03 10:16:47 25 4
gpt4 key购买 nike

我有一个可行的解决方案,但我非常相信有更好的方法来写这个。

我有一个用户控件,里面有一个数据网格。数据网格的 ItemsSource设置为 {Binding Path=MyView}在哪里 MyViewICollectionView View 模型的属性。用户控件的数据上下文设置为 View 模型。

在数据网格中,我有一个复选框标题。我要绑定(bind)IsChecked复选框的状态到 View 模型中的属性。

这是我到目前为止所拥有的,它似乎有效,但我担心这种绑定(bind)过于复杂。 UI 非常基本,所以我希望绑定(bind)比以前更简单。

有没有更好的方法来表达这种绑定(bind)?

<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Views:MyUserControlClass}}, Path=DataContext.AllRowsSelected}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>

最佳答案

在这种情况下,我使用

ElementName=userControl

代替
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Views:MyUserControlClass}}

你也可以使用
{Binding Parent.DataContext.AllRowsSelected, ElementName=LayoutRoot}

在这种情况下,我假设 布局根是其父元素是用户控件的元素的名称。 Parent是它的属性(property)。因此绑定(bind)设置为父级的 DataContext 属性。

我更喜欢最后一个变体,因为为用户控件提供名称会限制其使用。

编辑

关于 布局根 .此名称通常用于 Window 或 UserControl 中的顶部元素,或者只是一些布局:
<Window ...>
<Grid Name="LayoutRoot">
...
</Grid>
</Window>

这个名字没什么特别的。只是经常使用。与 xaml 中的命名空间别名相同的情况:sys(指向 mscorlib)、local(指向您的应用程序命名空间)等。

关于wpf - 将标题复选框绑定(bind)到用户控件的数据上下文的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com