.NET Framework Class Library for Silverlight
TreeView.SelectedItemChanged Event
Occurs when the value of the SelectedItem property changes.
Namespace: System.Windows.Controls
Assembly: System.Windows.Controls (in System.Windows.Controls.dll)
Syntax
Visual Basic (Declaration)
Public Event SelectedItemChanged As RoutedPropertyChangedEventHandler(Of Object)
C#
public event RoutedPropertyChangedEventHandler<Object> SelectedItemChanged
XAML Attribute Usage
<sdk:TreeView SelectedItemChanged="eventHandler"/>
Remarks
For more information about handling events, see Events Overview for Silverlight.
Examples
The following code example shows how to use the SelectedValuePath, SelectedValue, and SelectedItemChanged event together to update a text block that is data bound to the selected value.
Visual Basic
Partial Public Class MainPage Inherits UserControl ' Create the topics collection. Public Shared Topics As New ObservableCollection(Of Topic)() Public Sub New() InitializeComponent() ' Add some topics to the collection. Topics.Add(New Topic("Using Controls and Dialog Boxes", Guid.NewGuid())) Topics.Add(New Topic("Getting Started with Controls", Guid.NewGuid())) Dim DataGridTopic As New Topic("DataGrid", Guid.NewGuid()) DataGridTopic.ChildTopics.Add(New Topic( _ "Default Keyboard and Mouse Behavior in the DataGrid Control", Guid.NewGuid())) DataGridTopic.ChildTopics.Add(New Topic( _ "How to: Add a DataGrid Control to a Page", Guid.NewGuid())) DataGridTopic.ChildTopics.Add(New Topic( _ "How to: Display and Configure Row Details in the DataGrid Control", _ Guid.NewGuid())) Topics.Add(DataGridTopic) myTreeView.DataContext = Topics End Sub Private Sub myTreeView_SelectedItemChanged(ByVal sender As Object, _ ByVal e As RoutedPropertyChangedEventArgs(Of Object)) _ Handles myTreeView.SelectedItemChanged ' Set the data context of the text block to the selected value. Dim myTreeView As TreeView = TryCast(sender, TreeView) idTextBlock.DataContext = myTreeView.SelectedValue End Sub End Class ' Simple business object. Public Class Topic Private titleValue As String Public Property Title() As String Get Return titleValue End Get Set(ByVal value As String) titleValue = value End Set End Property Private idValue As Guid Public Property Id() As Guid Get Return idValue End Get Set(ByVal value As Guid) idValue = value End Set End Property Private childTopicsValue As ObservableCollection(Of Topic) Public Property ChildTopics() As ObservableCollection(Of Topic) Get Return childTopicsValue End Get Set(ByVal value As ObservableCollection(Of Topic)) childTopicsValue = value End Set End Property Private Sub New() ChildTopics = New ObservableCollection(Of Topic)() End Sub Public Sub New(ByVal title1 As String, ByVal id1 As Guid) Me.New() Title = title1 Id = id1 End Sub End Class
C#
public partial class MainPage : UserControl { // Create the topics collection. static public ObservableCollection<Topic> Topics = new ObservableCollection<Topic>(); public MainPage() { InitializeComponent(); // Add some topics to the collection. Topics.Add(new Topic("Using Controls and Dialog Boxes", Guid.NewGuid())); Topics.Add(new Topic("Getting Started with Controls", Guid.NewGuid())); Topic DataGridTopic = new Topic("DataGrid", Guid.NewGuid()); DataGridTopic.ChildTopics.Add( new Topic("Default Keyboard and Mouse Behavior in the DataGrid Control", Guid.NewGuid())); DataGridTopic.ChildTopics.Add( new Topic("How to: Add a DataGrid Control to a Page", Guid.NewGuid())); DataGridTopic.ChildTopics.Add( new Topic("How to: Display and Configure Row Details in the DataGrid Control", Guid.NewGuid())); Topics.Add(DataGridTopic); myTreeView.DataContext = Topics; //Associated a handler with the item changed event. myTreeView.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(myTreeView_SelectedItemChanged); } void myTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { // Set the data context of the text block to the selected value. TreeView myTreeView = sender as TreeView; idTextBlock.DataContext = myTreeView.SelectedValue; } } // Simple business object. public class Topic { public string Title { get; set; } public Guid Id { get; set; } public ObservableCollection<Topic> ChildTopics { get; set; } private Topic() { ChildTopics = new ObservableCollection<Topic>(); } public Topic(string title, Guid idValue) : this() { Title = title; Id = idValue; } }
XAML
<StackPanel x:Name="LayoutRoot" Background="White">
<StackPanel.Resources>
<sdk:HierarchicalDataTemplate x:Key="ChildTemplate" >
<TextBlock FontStyle="Italic" Text="{Binding Path=Title}" />
</sdk:HierarchicalDataTemplate>
<sdk:HierarchicalDataTemplate x:Key="NameTemplate"
ItemsSource="{Binding Path=ChildTopics}"
ItemTemplate="{StaticResource ChildTemplate}">
<TextBlock Text="{Binding Path=Title}" FontWeight="Bold" />
</sdk:HierarchicalDataTemplate>
</StackPanel.Resources>
<sdk:TreeView Width="400" Height="200" ItemsSource="{Binding}"
ItemTemplate="{StaticResource NameTemplate}" x:Name="myTreeView"
SelectedValuePath="Id" />
<StackPanel Orientation="Horizontal" >
<TextBlock Margin="5" Text="Selected topic GUID:" />
<TextBlock FontWeight="Bold" Margin="5" Text="{Binding}" x:Name="idTextBlock" />
</StackPanel>
</StackPanel>
Version Information
Silverlight
Supported in: 5, 4, 3Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
See Also
