2012-02-10 44 views
1

行详细信息我的Datagrid被绑定到我的数据库如何字符串变量绑定到数据网格被绑定到数据集

<WpfToolkit:DataGrid Name="DataGrid1" Grid.Row="1" 
     ItemsSource="{Binding Path=MainSearchBinding}" /> 

而且我有这势必会我的表在数据库中的简介列行详细信息

<WpfToolkit:DataGrid.RowDetailsTemplate>    
    <DataTemplate> 
     <StackPanel Orientation="Horizontal" Margin="5"> 
       <StackPanel Orientation="Vertical" Margin="5" > 
        <TextBlock Foreground="CadetBlue" FontSize="13" 
        Width="Auto" TextWrapping="Wrap" 
        Text="{Binding Path=Intro}"/> 

      </StackPanel> 
     </StackPanel> 
    </DataTemplate> 
</WpfToolkit:DataGrid.RowDetailsTemplate> 

我要的是在我的表使用简介列。我想从我的代码中使用字符串值而不是Column Intro。我如何将字符串值绑定到我的行详细信息?提前致谢。

回答

0

我修改了我的xaml代码,稍微将名称添加到文本块。

<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> 

而在后面的代码中,我将下面的代码添加到OnMouseClick。 retString是我的字符串变量。它在每个点击的行细节中显示我的字符串变量。

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

      // Getting the ContentPresenter of the row details 
      DataGridDetailsPresenter presenter = FindVisualChild<DataGridDetailsPresenter>(row); 


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

不要忘记在代码中添加FindVisualChild。这是代码。

private childItem FindVisualChild<childItem>(DependencyObject obj) 
    where childItem : DependencyObject 
     { 
      for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) 
      { 
       DependencyObject child = VisualTreeHelper.GetChild(obj, i); 
       if (child != null && child is childItem) 
        return (childItem)child; 
       else 
       { 
        childItem childOfChild = FindVisualChild<childItem>(child); 
        if (childOfChild != null) 
         return childOfChild; 
       } 
      } 
      return null; 
     } 

我不知道为什么没人回答我的问题。也许它不受欢迎。