C#, WPF. Я создал подкласс элемента управления TreeView и не могу заставить работать событие SelectedItemChanged
. Я не вижу, что я делаю иначе, чем в таких примерах, как this и this .
Код будет выполняться, но на InitializeComponent()
я получаю следующую ошибку:
ArgumentException: невозможно выполнить привязку к целевому методу, потому что его подпись или прозрачность безопасности несовместимы с сигнатурой типа делегата.
Этот минимальный проект демонстрирует проблему:
<Window x:Class="TEST.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:custom="clr-namespace:TEST"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<custom:CustomTreeView x:Name ="treeViewConfig2"
SelectedItemChanged="TreeViewControl_SelectedItemChanged" />
</Grid>
</Window>
namespace TEST
{
/// <summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//CustomTreeView tree = new CustomTreeView();
}
}
public class CustomTreeView : TreeView
{
public CustomTreeView() { } // default constructor
private void TreeViewControl_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<Object> e)
{
// Do something
}
}
}
Интересно, может ли это быть как-то связано с <object SelectedItemChanged="RoutedPropertyChangedEventHandler"/>
, упомянутым в документации Microsoft, но я не знаю, где / как я бы это реализовал, и я не увидеть что-либо эквивалентное в других примерах.
Создание события public
не меняет поведения.