如何绑定到 WPF 工具包数据网格之外的数据上下文
好的,我有一个组合框,可以从管理员列表中选择一个管理员:
<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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 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.