2012-02-16 87 views
3

我有Datagrid这是在每一行点击鼠标显示数据网格行的细节。这里是代码,如何更改每个DataGrid行详细信息的行详细信息的DataTemplate中的TextBlock文本?

Microsoft.Windows.Controls.DataGridRow row = (Microsoft.Windows.Controls.DataGridRow)(DataGrid1.ItemContainerGenerator.ContainerFromItem(DataGrid1.SelectedItem)); 


     DataGridDetailsPresenter presenter = FindVisualChild<DataGridDetailsPresenter>(row); 


     DataTemplate template = presenter.ContentTemplate; 
     TextBlock txt = (TextBlock)template.FindName("rowdetails", presenter); 
     txt.Text = retString; 

而且我也有复选框,当你检查它时,它应该显示所有的行细节。 我想这个代码显示所有rowdetails

if ((bool)chkboxRowDetails.IsChecked) 
      { 
       DataGrid1.RowDetailsVisibilityMode = Microsoft.Windows.Controls.DataGridRowDetailsVisibilityMode.Visible; 

       for (int i = 0; i < DataGrid1.Items.Count-1; i++) 
       { 
        Microsoft.Windows.Controls.DataGridRow row = (Microsoft.Windows.Controls.DataGridRow)(DataGrid1.ItemContainerGenerator.ContainerFromIndex(i)); 
        DataGridDetailsPresenter presenter = FindVisualChild<DataGridDetailsPresenter>(row); 
        DataTemplate template =presenter.ContentTemplate; 

        TextBlock txt = (TextBlock)template.FindName("rowdetails", presenter); 
        txt.Text = retString; 


       } 

但它给错误。 “此操作仅适用于应用此模板的元素。” 显示在行TextBlock txt =(TextBlock)template.FindName(“rowdetails”,presenter); 你知道我的代码有什么问题吗?我想通过选中复选框来显示所有行的详细信息。我的数据模板在这里

<WpfToolkit:DataGrid.RowDetailsTemplate> 

      <DataTemplate> 

       <StackPanel HorizontalAlignment="Stretch" Orientation="Vertical" Margin="5"> 
        <TextBlock Foreground="CadetBlue" FontSize="14" 
         TextWrapping="Wrap" Name="rowdetails" HorizontalAlignment="Stretch" 
         /> 
       </StackPanel> 
      </DataTemplate> 


     </WpfToolkit:DataGrid.RowDetailsTemplate> 
+0

当你使用:'x:Name =“rowdetails”'时会发生什么? – 2012-02-16 16:11:37

+0

仍然存在相同的错误。没有不同。 – 2012-02-17 04:21:33

回答

1

我通过在行细节加载中添加一些代码解决了这个问题。这是代码。

 TextBlock txt1 = e.DetailsElement.FindName("rowdetails") as TextBlock; 
     txt1.Text = retString; // where retString is variable string.