【发布时间】:2020-10-08 18:57:24
【问题描述】:
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
}
}
}
我想知道这是否与 Microsoft 文档中提到的 <object SelectedItemChanged="RoutedPropertyChangedEventHandler"/> 有关,但我不知道我将在哪里/如何实现它,并且在其他示例中没有看到任何等效项。
使事件public 不会改变行为。
【问题讨论】:
-
TreeViewControl_SelectedItemChanged 应该在 MainWindow 类中