2011-07-06 8 views
0
<sdk:TreeView x:Name="tvPageManager" SelectedItemChanged="tvPageManager_SelectedItemChanged" Style="{StaticResource PageManagerStyle}"          
         ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Auto"> 
         <sdk:TreeView.ItemTemplate> 
          <sdk:HierarchicalDataTemplate ItemsSource="{Binding KeyPoints, Mode=TwoWay}"> 
           <StackPanel Orientation="Horizontal"> 
            <ToolTipService.ToolTip> 
             <ToolTip Content="{Binding PageName}" Style="{StaticResource ToolTipStyle}"/> 
            </ToolTipService.ToolTip> 
            <Image x:Name="imgPageIcon" Source="{Binding PageIconImage}" Style="{StaticResource PageIconStyle}" MouseLeftButtonDown="imgPageIcon_MouseLeftButtonDown" Tag="{Binding BurstPageId, Mode=TwoWay}" /> 
            <TextBlock x:Name="tbkLiteralTextPage" Text="Page " Style="{StaticResource PageNameLiteralTextBlockStyle}" /> 
            <TextBox x:Name="tbPageName" Text="{Binding PageName, Mode=TwoWay}" Style="{StaticResource PageNameTextBoxStyle}" TextChanged="tbPageName_TextChanged" /> 
           </StackPanel> 
           <sdk:HierarchicalDataTemplate.ItemTemplate> 
            <DataTemplate> 
             <StackPanel Orientation="Horizontal"> 
              <Image x:Name="imgKeypointIcon" Source="../Assets/Images/bullet_yellow.png" Style="{StaticResource KeypointIconStyle}"/> 
              <TextBlock x:Name="tbkKeypointTitle" Text="{Binding Title, Mode=TwoWay}" Style="{StaticResource KeypointNameTextBlockStyle}" /> 
              <StackPanel x:Name="spnlMoveImages" Orientation="Horizontal" HorizontalAlignment="Right" Width="30"> 
               <Image x:Name="imgMoveUp" Source="../Assets/Images/up_arrow.png" Style="{StaticResource MoveIconsStyle}" MouseLeftButtonDown="imgMoveUp_MouseLeftButtonDown" Tag="{Binding KeyPointId}"/> 
               <Image x:Name="imgMoveDn" Source="../Assets/Images/down_arrow.png" Style="{StaticResource MoveIconsStyle}" MouseLeftButtonDown="imgMoveDn_MouseLeftButtonDown" Tag="{Binding KeyPointId}"/> 
              </StackPanel> 
             </StackPanel> 
            </DataTemplate> 
           </sdk:HierarchicalDataTemplate.ItemTemplate> 
          </sdk:HierarchicalDataTemplate> 
         </sdk:TreeView.ItemTemplate> 
        </sdk:TreeView>  

for above XAML、私はプログラムによって、選択されたノードまたはリーフを知る必要がありますか?Silverlight 4:TreeView/HierarchicalDataTemplate /選択されたノード/リーフの問題を取得

現在のノードがパラメータ(e.NewValue)として渡されるので、あなたはすでに「tvPageManager_ SelectedItemChanged」選択イベントをキャッチしている

答えて

1

private void tvPageManager_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<Object> e) 
{ 
    //Perform actions when SelectedItem changes 
    MessageBox.Show(((TreeViewItem) e.NewValue).Header.ToString()); 
} 
+0

ご迷惑をおかけして申し訳ございません。実際には、私はC#コードからノードを選択する必要があります。 シナリオ:実行時に子ノードを挿入/削除していますが、この時点でコレクションが変更されています(ツリービューがバインドされています; this.tvPageManager.ItemsSource = burst.BurstPages)。したがって、選択(選択されたフォーカス)はツリービューで変更されます。子ノードの追加/削除が正常に完了したら、再度設定する必要があります。 –

+0

ああ、再帰的な検索を書いて、目的のツリーノードでIsSelectedプロパティをtrueに設定します。ターゲットノードを特定する手段は何ですか?タグ値?テキスト? –

0

ハイテックマジック、 私は十分に私の質問を説明ないため申し訳ありません私は解決策を見つけました。

private void ExpandNodeAndSelectChild() 
    { 
     if (branchSelector < 1 || leafSelector < 1) 
      return; 

     TreeViewItem item = null; 
     int itemAtIndex = 0; 

     //Update tree layout 
     this.tvName.UpdateLayout(); 

     foreach (var branch in this.tvName.Items) 
     { 
      item = (this.tvName.GetContainerFromItem(this.tvName.Items[itemAtIndex]) as TreeViewItem); 
      if (item != null && item.HasItems) 
      { 
       if ((branch as Model.BranchBusinessObject).Id== branchSelector && (!item.IsExpanded)) 
        item.IsExpanded = true; 

       foreach (var leaf in item.Items) 
       { 
        item = (this.tvName.GetContainerFromItem(leaf as Model.LeafBusinessObject) as TreeViewItem); 
        if (item != null && ((leaf as Model.LeafBusinessObject).Id== leafSelector)) 
        { 
         item.IsSelected = true; 
         break; 
        }       
       } 
      } 
      itemAtIndex++; 
     } 
    } 
関連する問題