2010-01-20 144 views
1

我的WPF頁面具有Telerik提供的RadGrid控件。網格是一個嵌套網格,基本上意味着單擊該行最左列上的(+)號將該行擴展爲一個子網格。這是通過在我的XAML中指定分層網格來完成的。當您單擊行並展開子網格時,一切正常,但最初選定行的selectedItem似乎沒有改變。一個例子是最初選擇網格的第1行,然後展開第4行以顯示子網格。顯示子網格,但selectedItem仍然是第1行。所需行爲是第4行是selectedItem,一旦它展開顯示子網格。任何人都可以指出這裏究竟發生了什麼問題。Telerik Radgrid WPF

感謝

回答

1

你是對的 - 這裏是更新版本:

private void RadGridView_Loaded(object sender, RoutedEventArgs e) 
    { 
     var childGrid = (RadGridView)sender; 
     var parentRow = childGrid.ParentRow; 

     if (parentRow != null) 
     { 
      RadGridView1.SelectedItem = childGrid.DataContext; 
      parentRow.IsExpandedChanged += new RoutedEventHandler(parentRow_IsExpandedChanged); 
     } 
    } 

    void parentRow_IsExpandedChanged(object sender, RoutedEventArgs e) 
    { 
     RadGridView1.SelectedItem = ((GridViewRow)sender).DataContext; 
    } 
+0

謝謝弗拉德。邏輯確實看起來像是能夠解決問題的東西。但似乎IsExpandedChanged事件不可用於parentRow。它是否已添加到Telerik的更高版本? – 2010-01-22 14:45:04

+0

事實上,此活動已於2009年第3季度增加 - 更多信息,請訪問:http://www.telerik.com/products/wpf/whats-new/release-history/q3-2009-sp1-version-2009-3-1208 -183011105.aspx – 2010-01-25 08:26:08

+0

謝謝弗拉德。這有助於。 – 2010-01-25 15:23:34

0

下面是一個例子:

XAML

<Window x:Class="WpfApplication1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"  
Title="Window1"> 
<Grid> 
    <telerik:RadGridView x:Name="RadGridView1" ItemsSource="{Binding}"> 
     <telerik:RadGridView.ChildTableDefinitions> 
      <telerik:GridViewTableDefinition /> 
     </telerik:RadGridView.ChildTableDefinitions> 
     <telerik:RadGridView.HierarchyChildTemplate> 
      <DataTemplate> 
       <telerik:RadGridView ItemsSource="{Binding Items}" Loaded="RadGridView_Loaded" /> 
      </DataTemplate> 
     </telerik:RadGridView.HierarchyChildTemplate> 
    </telerik:RadGridView> 
</Grid> 

C#

using System.Windows; 
using System.Linq; 

namespace WpfApplication1 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      DataContext = from i in Enumerable.Range(0, 10) 
          select new 
          { 
           ID = i, 
           Items = from j in Enumerable.Range(0, 10) 
             select new 
             { 
              ID = j, 
             } 
          }; 
     } 

     private void RadGridView_Loaded(object sender, RoutedEventArgs e) 
     { 
      RadGridView1.SelectedItem = ((FrameworkElement)sender).DataContext; 
     } 
    } 
} 
+0

感謝弗拉德,但Loaded事件觸發僅在第一次網格裝上首次的(+)符號,使單擊調用RadGridView_Loaded,在同一行,隨後單擊不調用事件。是否有其他事件需要與父網格或子網格關聯? – 2010-01-21 19:09:42