首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有相同DataGrid (当前项)的DataGrid.RowDetailsTemplate中的ItemsSource

具有相同DataGrid (当前项)的DataGrid.RowDetailsTemplate中的ItemsSource
EN

Stack Overflow用户
提问于 2014-08-25 15:17:26
回答 2查看 679关注 0票数 0

我对DataGrid有一个问题,它在DataGrid.RowDetailsTemplate中。

我有一个ObservableCollection类,它有大约20个属性,但没有其他集合。我想把它们分开以便更好地观看。第一个名为“DataGrid”的mainGrid应该显示前10个属性..。

然后,我定义了DataGrid.RowDetailsTemplate,以便在用户单击该行时显示其余内容。但不起作用。第二个DataGrid位于RowDetailsTemplate内部

代码语言:javascript
复制
    <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。

但是这个例子工作得很好:

代码语言:javascript
复制
    <Dgv:DataGrid.RowDetailsTemplate>
        <DataTemplate>
         <StackPanel>
          <TextBlock Text = "{Binding Parameter1}" />
          <TextBlock Text = "{Binding Parameter2}" />
         </StackPanel>
        </DataTemplate>
    </Dgv:DataGrid.RowDetailsTemplate>

但是我真的想要一个DataGrid因为标题等等..。

我使用的是.NET 3.5

事先非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-25 16:04:20

你真的不能这么做。ItemsSource希望成为一个IEnumerable,而您想要的是给它一个项目。

这是一种令人讨厌的方式来完成它。在对象的类中,绑定外部数据集的ItemSource以定义一个新属性,该属性以某种IEnumerable的形式返回自身

代码语言:javascript
复制
public class MyClass
{
    public IEnumerable<MyClass> AsIEnumerable
    {
        get
        {
            yield return this;
        }
    }
}

XAML

代码语言:javascript
复制
//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>

你说你想要头像。我的建议是用适当的工具创建页眉,而不是因为圆圈的存在而将方格缩成圆形。

票数 0
EN

Stack Overflow用户

发布于 2014-08-25 16:01:28

尝尝这个

代码语言:javascript
复制
 <Dgv:DataGrid x:Name="dgvRowDetails" ItemsSource="{Binding}">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25489123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档