我对DataGrid有一个问题,它在DataGrid.RowDetailsTemplate中。
我有一个ObservableCollection类,它有大约20个属性,但没有其他集合。我想把它们分开以便更好地观看。第一个名为“DataGrid”的mainGrid应该显示前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,但我不知道如何实现它,因为其他属性指的是当前或selectedItem。
但是这个例子工作得很好:
<Dgv:DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text = "{Binding Parameter1}" />
<TextBlock Text = "{Binding Parameter2}" />
</StackPanel>
</DataTemplate>
</Dgv:DataGrid.RowDetailsTemplate>但是我真的想要一个DataGrid因为标题等等..。
我使用的是.NET 3.5
事先非常感谢!
发布于 2014-08-25 16:04:20
你真的不能这么做。ItemsSource希望成为一个IEnumerable,而您想要的是给它一个项目。
这是一种令人讨厌的方式来完成它。在对象的类中,绑定外部数据集的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>你说你想要头像。我的建议是用适当的工具创建页眉,而不是因为圆圈的存在而将方格缩成圆形。
发布于 2014-08-25 16:01:28
尝尝这个
<Dgv:DataGrid x:Name="dgvRowDetails" ItemsSource="{Binding}">https://stackoverflow.com/questions/25489123
复制相似问题