如何绑定到 WPF 工具包数据网格之外的数据上下文

发布于 2024-08-14 18:15:45 字数 1387 浏览 2 评论 0原文

好的,我有一个组合框,可以从管理员列表中选择一个管理员:

<ComboBox x:Name="adminCombo"
          ItemsSource="{Binding AdminsList}"
          DisplayMemberPath="Name"
          SelectedValue="{Binding Administrator}"
          SelectedValuePath="Name"/>

在其下面有一个 WPF Toolkit DataGrid。每个管理员都拥有一个用户定义字段 (AvailableUDF) 的列表。在数据网格的第一列中,我想要一个可编辑模板,其中包含另一个组合框,其项目源是属于所选管理员的字段列表。以下标记不起作用。

<toolkit:DataGrid 
     AutoGenerateColumns="False"
     ItemsSource="{Binding Path=UserDefinedFields}">
     <toolkit:DataGrid.Columns>
        <toolkit:DataGridTemplateColumn Header="Custom Data">
          <toolkit:DataGridTemplateColumn.CellEditingTemplate>
             <DataTemplate>
                  <ComboBox ItemsSource="{Binding ElementName=adminCombo, 
                    Path=SelectedValue.AvailableUDFs}"
                    SelectedValue="{Binding Field.Type}"
                    DisplayMemberPath="Name"/>
             </DataTemplate>
          </toolkit:DataGridTemplateColumn.CellEditingTemplate>
        </toolkit:DataGridTemplateColumn>
     </toolkit:DataGrid.Columns>
</toolkit:DataGrid>

我也尝试过相对源 - 查找祖先并在树中搜索到上一个组合框,但无济于事。奇怪的是,将相同的组合框放入 ListView 的项目模板中效果很好,正确的项目列表显示取决于所选的管理员。使用 WPF ListView 的问题是,最终我希望在同一行上有其他可编辑单元格,而普通的 ListView 不适用于此目的。

有人可以帮我吗? 谢谢 克里斯

OK So I have a combo box which selects an administrator from a list of administrators:

<ComboBox x:Name="adminCombo"
          ItemsSource="{Binding AdminsList}"
          DisplayMemberPath="Name"
          SelectedValue="{Binding Administrator}"
          SelectedValuePath="Name"/>

and below this I have a WPF Toolkit DataGrid. Each administrator holds a list of user-defined fields (AvailableUDFs). In the first column of my datagrid I want to have an editable template consisting of another combobox whose items source is the list of fields belonging to the selected administrator. The following markup does not work.

<toolkit:DataGrid 
     AutoGenerateColumns="False"
     ItemsSource="{Binding Path=UserDefinedFields}">
     <toolkit:DataGrid.Columns>
        <toolkit:DataGridTemplateColumn Header="Custom Data">
          <toolkit:DataGridTemplateColumn.CellEditingTemplate>
             <DataTemplate>
                  <ComboBox ItemsSource="{Binding ElementName=adminCombo, 
                    Path=SelectedValue.AvailableUDFs}"
                    SelectedValue="{Binding Field.Type}"
                    DisplayMemberPath="Name"/>
             </DataTemplate>
          </toolkit:DataGridTemplateColumn.CellEditingTemplate>
        </toolkit:DataGridTemplateColumn>
     </toolkit:DataGrid.Columns>
</toolkit:DataGrid>

I have also tried Relative Source - Find Ancestor and searching up the tree to the previous combo box, but to no avail. Oddly enough, putting the same combo box into a ListView's items template works fine, the correct list of items shows up dependent on the selected administrator. The problem with using a WPF ListView is that ultimately I want to have other editable cells on the same row, and a plain ListView is not intended for this purpose.

Can anyone help me out?
Thanks
Chris

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花开雨落又逢春i 2024-08-21 18:15:45

您可以使用 datagridcombocolumn,并且获取项目源有点棘手,我回答了如何执行此操作 在这里,享受吧。

you can use a datagridcombocolumn, and getting the items source to it is a bit tricky, i answered how to do this here, enjoy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文