今天半天都被 TreeView里的SelectedItemChanged事件传过来的e参数困扰
private void fileviewer_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
因为自定义了一个继承自TreeViewItem的类,想要多给他附上一些属性,以便自己使用
public class FileViewer : TreeViewItem
{
#region adress
public string Address
{
get { return (string)GetValue(AddressProperty); }
set { SetValue(AddressProperty, value); }
}
// Using a DependencyProperty as the backing store for Address. This enables animation, styling, binding, etc...
public static readonly DependencyProperty AddressProperty =
DependencyProperty.Register("Address", typeof(string), typeof(FileViewer), new PropertyMetadata(""));
#endregion
}
但是发现
private void fileviewer_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
//这个参数e,不能够强制转换成我自定义FileViewer类,我一直以为继承自treeview就可以转换的,找了半天的解决方法;
最后发现只需要在TreeView里设置ItemContainerStyle就可以了,绑定你要使用继承自TreeViewItem的自定义类就可以了;
<TreeView x:Name="fileviewer" Grid.Row="3" Grid.Column="0" ItemContainerStyle="{Binding FileViewer}" SelectedItemChanged="fileviewer_SelectedItemChanged"/>