Shi*_*mmy 10 wpf binding wpftoolkit datagridcomboboxcolumn
我有3个表:Item - 这是DataContext - 它有一个导航列Group Group - 有一个导航列Category.
我希望在DataGrid中包含(类别和组)列,当我选择一个类别时,它应该只在组列中显示Category.Groups.
这是我正在处理的代码:
<tk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}">
<tk:DataGrid.Columns>
<!--Works-->
<tk:DataGridComboBoxColumn
Header="Categroy"
DisplayMemberPath="Title"
SelectedValuePath="CategoryId"
SelectedValueBinding="{Binding Group.Category.CategoryId}"
ItemsSource="{Binding Context.Categories,
Source={x:Static Application.Current}}"
/>
<!--Look at these two things:-->
<!--This does work-->
<tk:DataGridTemplateColumn>
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl
ItemsSource="{Binding Group.Category.Groups}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type data:Group}">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
<!--But this does NOT work, even it's the same source-->
<!--Notice I even tried a dummy converter and doesnt reach there-->
<tk:DataGridComboBoxColumn
Header="Group"
DisplayMemberPath="Title"
SelectedValuePath="GroupId"
ItemsSource="{Binding Group.Category.Groups,
Converter={StaticResource DummyConverter}}"
SelectedValueBinding="{Binding Group.GroupId}"
/>
</tk:DataGrid.Columns>
</tk:DataGrid>
Run Code Online (Sandbox Code Playgroud)
更新
您是否说问题是ItemsSource属性不能设置为非静态绑定?我怀疑是因为即使我将ItemsSource设置{Binding}为DummyConverter它也不会在转换器中停止; 并在类别ComboBox中它工作正常.
Ara*_*and 28
数据网格中的列没有datacontext,因为它们从未添加到可视树中.听起来有点奇怪,但看看vince的博客,它有一个很好的视觉布局的例子.绘制网格后,单元格具有数据上下文,您可以使用常规绑定(而不是静态资源..)在其中设置组合框项目源.
您可以访问组合框项目源:
<dg:DataGridComboBoxColumn>
<dg:DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
</Style>
</dg:DataGridComboBoxColumn.EditingElementStyle>
</dg:DataGridComboBoxColumn>
Run Code Online (Sandbox Code Playgroud)
看看这里,并在这里的一些代码.您还需要设置非edting元素的项目源在这个岗位
我正在使用 MVVM,我想将ItemSource列的绑定到窗口数据上下文中的对象集合。在找到这个答案之前,我一定尝试了 10 种不同的方法,但没有任何效果。
诀窍是CollectionViewSource在网格外部定义 a ,然后使用StaticResource. 例如,
<Window.Resources>
<CollectionViewSource x:Key="ItemsCVS" Source="{Binding MyItems}" />
</Window.Resources>
<!-- ... -->
<DataGrid ItemsSource="{Binding MyRecords}">
<DataGridComboBoxColumn Header="Column With Predefined Values"
ItemsSource="{Binding Source={StaticResource ItemsCVS}}"
SelectedValueBinding="{Binding MyItemId}"
SelectedValuePath="Id"
DisplayMemberPath="StatusCode" />
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28994 次 |
| 最近记录: |