我有一个视图,其中有一个datagrid,在datagrid中我将一列作为DataGridTemplateColumn。我在DataGridTemplate列中放置了一个组合框,我在组合框中定义了一个数据模板。用户可以在组合框中输入文本结果过滤到CustomeDatagrid,用户可以在CustomeDatagrid上选择Item。
这是我的要求:
我试着去实现它。 这是我的XAML:
<DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding OrderItems}"
AlternatingRowBackground="{DynamicResource InflowDataGridAlternateBackgroundBrush>
<DataGrid.Columns>
<DataGridTemplateColumn Width="200" Header="Item">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProductName,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate>
<vw:CustomDatagrid />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
CustomDataGrid:
<UserControl x:Class="RH_Maize.View.CustomDatagrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Width="590" Height="251">
<Grid Background="{DynamicResource GridBackgroundBrush}">
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn MinWidth="150" Header="Category"/>
<DataGridTextColumn MinWidth="180" Header="Item"/>
<DataGridTextColumn MinWidth="130" Header="Rate"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>
但是当我点击DatagridTemplate列时,我只得到普通的组合框而不是自定义数据网格。
我的代码出了什么问题?
如何在wpf?
中的组合框内实现上面的(图像)CustomDatagrid编辑:
如何在通过绑定更改组合框文本时填充customDataGrid?
答案 0 :(得分:3)
你在ComboBox中不需要ItemTemplate
<DataGrid AutoGenerateColumns="False" Name="tstgrid"
ItemsSource="{Binding OrderItems}"
>
<DataGrid.Columns>
<DataGridTemplateColumn Width="200" Header="Item">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProductName,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox>
<vw:CustomDatagrid />
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:0)
编辑ComboBox的控件模板,并将ItemPresenter替换为DataGrid。
http://msdn.microsoft.com/en-us/library/ms752094(v=vs.110).aspx
将ComboBox ItemsSource绑定到DataGrid ItemsSource,
<uc:DataGrid x:Name="ItemsPresenter" ItemSource="{Binding ItemsSource, RelativeSource={RelativeSource TemplatedParent}}"/>