Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to get Silverlight TreeViewItem by Id?
    text
    copied!<p>I have a Silverlight treeview that is dynamically populated with treeviewitems(representing views). I have things working fine but when I click on an treeviewitem say, View 2.01, I want to be able to get the ItemId(for View 2.01) and have the View 2.01 shown in the ViewSwitchingRegion or simply view switch by ItemId. Here’s what I have done. What am I missing?</p> <pre><code>&lt;UserControl.Resources&gt; &lt;sdk:HierarchicalDataTemplate x:Key="childNodeDataTemplate" ItemsSource="{Binding Children}"&gt; &lt;TextBlock Text="{Binding Path=Header}"/&gt; &lt;/sdk:HierarchicalDataTemplate&gt; &lt;/UserControl.Resources&gt; &lt;sdk:TreeView Name="DataTreeView" ItemsSource="{Binding DataItems}" ItemTemplate="{StaticResource childNodeDataTemplate}"&gt; &lt;i:Interaction.Triggers&gt; &lt;i:EventTrigger EventName="SelectedItemChanged"&gt; &lt;i:InvokeCommandAction Command="{Binding Path=ShowViewCommand}" CommandParameter="{Binding ElementName=DataTreeView}"/&gt; &lt;/i:EventTrigger&gt; &lt;i:EventTrigger EventName="MouseDoubleClick"&gt; &lt;i:InvokeCommandAction Command="{Binding Path=ShowViewCommand}" CommandParameter="{Binding ElementName=DataTreeView}"/&gt; &lt;/i:EventTrigger&gt; &lt;/i:Interaction.Triggers&gt; &lt;/sdk:TreeView&gt; &lt;/UserControl&gt; public class DataViewModel : ViewModelBase { #region Fields private readonly IRegionManager _regionManager; ... #endregion #region .Ctors public DataViewModel() { //IRegionManager regionManager, ... _regionManager = ServiceLocator.Current.GetInstance&lt;IRegionManager&gt;(); //SomeMethodToLoadDataItems(); } #endregion #region Methods ObservableCollection&lt;DataItem&gt; _dataItems; public ObservableCollection&lt;DataItem&gt; DataItems { get { return _dataItems; } set { if (_dataItems != value) { _dataItems = value; RaisePropertyChanged("DataItems"); } } } RelayCommand _showViewCommand; public ICommand ShowViewCommand { get { if (_showViewCommand == null) { _showViewCommand = new RelayCommand ( p =&gt; ShowView(p) ); } return _showViewCommand; } } private void ShowView(object param) { if (param != null &amp;&amp; param == ItemId) //ItemId for View 2.01 { _regionManager.RequestNavigate("ViewSwitchingRegion", new Uri("View 2.01", UriKind.Relative)); } } } public class DataItem : ViewModelBase { public DataItem() { this.Children = new ObservableCollection&lt;DataItem&gt;(); } private string header; public string Header { get {return this.header;} set { if (this.header != value) { this.header = value; OnPropertyChanged("Header"); } } } private DataItem _itemId; public DataItem ItemId { get { return _itemId; } set { if (value != _itemId) { _itemId = value; RaisePropertyChanged("ItemId"); } } } public ObservableCollection&lt;DataItem&gt; Children { get; set; } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload