2017-02-14 27 views
0

私はListBoxを持つハンバーガーメニューを持っています。項目をクリックすると強調表示され、関連ページに移動しましたが、xamlページ内の任意のリンクをクリックするとハンバーガー項目は変更されません。ナビゲート。どのようにリストボックスの項目を選択し、コードの背後から強調表示を設定する。おかげで事前リストボックス項目の選択programatically

に私は私が(別のXAMLページからApp.SelectedPageを設定することにより、上記のメソッドを呼び出しています、私の必要な1

public async static void ChangeSideBarItem() 
    { 
     ADHome objADHome = new ADHome(); 
     string selected = App.SelectedPage; 

     int x = objADHome.SideBarListBox.Items.IndexOf(selected); 
     if (!String.IsNullOrEmpty(selected)) 
     { 
      for (int index = 0; index < objADHome.SideBarListBox.Items.Count; index++) 
      { 
       HamburgerItemClass item = (HamburgerItemClass)objADHome.SideBarListBox.Items[index]; 

       string item1 = item.Title; 
       if (selected == item1) 
       { 
        objADHome.SideBarListBox.SelectedItem = index; 
        break; 
       } 
      } 
     } 
    } 

にリストボックスの項目を変更する必要がどこから次の関数を呼び出していますオーダーページ)は、ここで私は、リストボックス内の特定のダッシュボードアイテム(サイドバー)が

private void DashboardLink_Click(object sender, RoutedEventArgs e) 
    { 
     App.SelectedPage = "Dashboard"; 
     ADHome.ChangeSideBarItem(); 
     this.Frame.Navigate(typeof(DashBoard)); 
    } 

を強調したが、私はそれをデバッグするときには、選択されていないする必要があることをクリックすると、リンクのダッシュボードは、ダッシュボードのページに戻って移動しなければなりません選択されている私はあなたがonNavigatedTo()メソッドをオーバーライドし、デフォルトにアイテムの色を変更することができると思います

private void SelectButton_Click(object sender, RoutedEventArgs e) 
{ 
    // either by adding item from collection: 
    myListBox.SelectedItems.Add(CollectionOfItems[1]); 

    // or add from list itself: 
    myListBox.SelectedItems.Add(myListBox.Items.Last()); 
} 

答えて

0

一般的に、あなただけのListBox.SelectedItemsコレクションにアイテムを追加することができます。他のフレームへの引数として(Frame).Navigate()を渡すと、リストの.SelectedItemが比較されます。 私の英語は申し訳ありません。

+0

申し訳ありませんが、私は答えを理解していません – Murali

+0

@ムラリあなたは 'どのようにリストボックスの項目を選択し、コードの背後から強調表示するように頼んだ - これはその質問への答えです、あなたは* * ItemsSource *を 'CollectionOfItems'として設定したmyListBox'を呼び出します。私はちょうどダミーのボタンクリックのイベントとしてこれを提示しました。 – Romasz

+0

私のcollectionOfItemsはlistboxにバインドされていますが、ハンバーガーメニュー項目(つまりリストボックス項目)の項目をクリックせずに、選択した項目を変更するだけです。例:メニューにダッシュボードとオーダーアイテムがあります。ダッシュボードをクリックするとDashboard.xamlがフレームに移動し、アイテムがハンバーガーメニューの(デフォルトではリストボックスのスタイルで)ハイライト表示されますが、 Goto OrdersPageのようなDashboard.xamlページ。これをクリックすると、OrdersPage.xamlがフレームにナビゲートされますが、ハンバーガーメニューはダッシュボード項目を強調表示します。 – Murali

0

:アイテム

0

ListBoxItemSourceにコレクションを設定する場合は、を使用してListBox.SelectedItemに設定する必要があります。コレクションがObservableCollection<Menu> Menusの場合、ListBox.SelectedItemに設定されたMenuオブジェクトを使用できるはずです。例えば

SideBarListBox.SelectedItem = Menus[1]; 

我々は次のコードでListBoxItemを設定した場合、我々はListBox.SelectedItemListBoxItemセットを使用することができるはずです。ところで

<ListBox Name="MyListBox"> 
    <ListBox.Items> 
     <ListBoxItem Name="FristItem"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE170;"></TextBlock> 
      </StackPanel> 
     </ListBoxItem> 
     <ListBoxItem Name="SecondItem"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE171;"></TextBlock> 
      </StackPanel> 
     </ListBoxItem> 
    </ListBox.Items> 
</ListBox> 

、我々は選択した項目を設定するためにListBox.SelectedIndexを使用することができるはずです。

SelectedItemが強調表示されるように設定すると、他の色を変更する場合は、ListBox.ContainerFromItemを使用してListBoxItemを取得する必要があります。次に、BackgroundForegroundを設定することができます。

関連する問題