0x4*_*9D1 3 wpf treeview binding
我通过ItemsSource属性和ItemTemplate属性将项目添加到TreeView控件中,以设置TreeViewItem的模板。如何添加事件处理程序以处理TreeViewItems上的选择更改事件?
现在,我的ItemTemplate看起来像这样:
<Window.Resources><DataTemplate x:Key="PeerDetailTemplate">
<TextBlock Text="{Binding DESCRIPTION}" Tag="{Binding ID}" GotFocus="GetModules"/>
</DataTemplate></Window.Resources>
Run Code Online (Sandbox Code Playgroud)
但这不起作用(未调用GetModules)。我对WPF还是陌生的,所以请告诉我正确的方向来做这些事情。
如果要在TreeView中捕获SelectedItemChanged事件,则需要在父节点上设置事件处理程序,即
XAML
<StackPanel>
<TreeView SelectedItemChanged="OnTreeViewSelectedItemChanged">
<TreeViewItem Header="Desktop">
<TreeViewItem Header="Computer" />
<TreeViewItem Header="My Documents" />
<TreeViewItem Header="c:\" />
</TreeViewItem>
<TreeViewItem Header="Recyle Bin" >
<TreeViewItem Header="foo.txt" />
<TreeViewItem Header="bar.txt" />
<TreeViewItem Header="fizz.buzz" />
</TreeViewItem>
<TreeViewItem Header="Control Panel" >
<TreeViewItem Header="Programs" />
<TreeViewItem Header="Security" />
<TreeViewItem Header="User Accounts" />
</TreeViewItem>
</TreeView>
<TextBlock Margin="20" x:Name="MyTextBlock" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
背后的代码:
private void OnTreeViewSelectedItemChanged( object sender, RoutedPropertyChangedEventArgs<object> e )
{
MyTextBlock.Text = ( (TreeViewItem) ( (TreeView) sender ).SelectedItem ).Header.ToString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12605 次 |
| 最近记录: |