我在DataGrid.RowDetailsTemplate中有一个DataGrid的问题。
我有一个ObservableCollection类,它有大约20个属性但没有其他集合。我想拆分它们以便更好地观看。名为“mainGrid”的第一个DataGrid应该显示前10个属性......
然后我定义了DataGrid.RowDetailsTemplate,以便在用户单击该行时显示其余部分。但它不起作用。第二个DataGrid位于RowDetailsTemplate
中 <Dgv:DataGrid.RowDetailsTemplate>
<DataTemplate>
<Dgv:DataGrid x:Name="dgvRowDetails">
<Dgv:DataGrid.Columns>
<Dgv:DataGridTextColumn Header="Parameter 1"
Binding="{Binding Parameter1}" />
<Dgv:DataGridTextColumn Header="Parameter 2"
Binding="{Binding Parameter2}" />
</Dgv:DataGrid.Columns>
</Dgv:DataGrid>
</DataTemplate>
</Dgv:DataGrid.RowDetailsTemplate>
它只显示RowDetails中的标题(当我点击一行时)但没有内容。 输出选项卡不显示任何绑定错误。
我想我也需要一个ItemsSource但是我不知道如何实现它,因为其他属性引用了current或selectedItem。
但这样可以正常工作:
<Dgv:DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text = "{Binding Parameter1}" />
<TextBlock Text = "{Binding Parameter2}" />
</StackPanel>
</DataTemplate>
</Dgv:DataGrid.RowDetailsTemplate>
但是我真的想要一个DataGrid,因为Headers等......
我正在使用.NET 3.5
非常感谢提前!
答案 0 :(得分:0)
试试这个
<Dgv:DataGrid x:Name="dgvRowDetails" ItemsSource="{Binding}">
答案 1 :(得分:0)
你真的不能这样做。 ItemsSource
期望成为IEnumerable
,您想要的是给它一个项目。
这是一种实现它的hacky方式。在对象的类中,绑定外部数据网格的ItemSource以定义以某些IEnumerable
public class MyClass
{
public IEnumerable<MyClass> AsIEnumerable
{
get
{
yield return this;
}
}
}
XAML
//Inner datagrid
//Datacontext is MyClass object
<Dgv:DataGrid x:Name="dgvRowDetails"
AutoGenerateColumns="False"
ItemsSource="{Binding AsIEnumerable}">
<Dgv:DataGrid.Columns>
<Dgv:DataGridTextColumn Header="Parameter 1"
Binding="{Binding Path=Parameter1}" />
<Dgv:DataGridTextColumn Header="Parameter 2"
Binding="{Binding Path=Parameter2}" />
</Dgv:DataGrid.Columns>
</Dgv:DataGrid>
你说你想要标题。我的建议是使用适当的工具创建标题,而不是使用圆角正方形,因为圆圈存在。