1

我有一个带有 RowDetails 部分的 DataGrid。在 rowdetails 我有一个堆栈面板。我想用代码动态地将孩子添加到这个堆栈面板中......但我无法从代码中访问面板。

       <DataGrid.RowDetailsTemplate>
        <DataTemplate>
                <Border x:Name="Border_RowDetails" Margin="5" Padding="3" BorderBrush="Blue" BorderThickness="3" CornerRadius="5">
                    <StackPanel x:Name="StackPanel_Detail" Orientation="Vertical">
                        <TextBlock Foreground="White" FontSize="30" Text="Auftragsdetails:  " Margin="100, 0,0,0"/>
                    </StackPanel>  
                </Border>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
    </DataGrid>

我想将 Childs (Textblocks) 添加到代码隐藏文件中的 Stackpanel“StackPanel_Detail”。

背景:

DataGrid 有一个数据表作为 itemssource。如果我单击一行,则会显示行详细信息,并且我应该显示来自另一个数据表的更多信息!detailrows 的数量并不总是相同的。我真的不知道如何使用 xaml 和绑定来做到这一点,因为我对 wpf 和 xaml 真的很陌生。我所能找到的只是在 datagrid.itemssource 的 rowdetails 中显示其他列。因此我想计算后面代码中的数字并为每条记录创建文本块。

例子:

数据网格第 1 行:Customer1 OrderID1 详细信息: 第 1 行:OrderID1 COILID1

Datagrid Row2:Customer2 OrderID2 详细信息: Row1:OrderID2 COILID1 Row2:OrderID2 COILID2

我真的很感激每一个帮助。我很抱歉我的英语不好!

问候,弗洛里安

4

2 回答 2

0

我在另一个板上找到了解决方案。我使用了 ContentPresenter 和“Content_Loaded”-Event 并用它在代码中编写了 StackPanel 和 TextBlocks .....我想这不是最干净的解决方案,但它确实有效!

于 2013-11-13T09:07:01.137 回答
0

您可以在 RowDetailsTemplate 中使用 ItemsControl(将 StackPanel 作为 ItemsPanel),将其 ItemsTemplate 定义为包含 TextBlock(或您想要的任何复杂 UI)的 DataTemplate,然后将 ItemsControl 的 ItemsSource 属性数据绑定到 ObservableCollection。然后将为您添加到集合中的每个项目生成一个 TextBlock。MVVM 救援 ;) 请注意,您需要增强 DataGrid Row ViewModel,使其每个都包含一个 ObservableCollection,用于您希望在其详细信息面板中显示的内容。

于 2013-11-12T14:04:47.420 回答