gpt4 book ai didi

c# - WPF 和 C# : Create an override for a datagrid within a user control?

转载 作者:行者123 更新时间:2023-11-30 13:39:13 25 4
gpt4 key购买 nike

我有一个大型 WPF 应用程序,其中我在用户控件中有一个数据网格,我需要为 OnCreateAutomationPeer 创建一个覆盖。我在这样做时遇到了麻烦,而且事件似乎从未发生过。在我的代码隐藏中,我有类似的东西

public partial class DocChecklistView :  UserControl, IDataModuleView {     

protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer()
{
return null;
}

public CDocumentChecklistView() {
InitializeComponent();
}
}

XAML 非常标准,代码如下

<UserControl>
<Grid>
<toolkit:DataGrid ItemsSource="{Binding Source={StaticResource DocumentsVS}}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False"
FontSize="16" Name="_dgDocuments" Style="{StaticResource EklektosDataGridStyle}" . . . >
</UserControl>

在上面,toolkit:DataGrid 被设置为 WPFToolkit 的命名空间。 DataGrid 按设计工作,我只是从未在用户控件中进行覆盖,而且我上面的代码从未触发 - 从未到达过断点。

有什么想法吗?

最佳答案

您已正确覆盖该方法。如果您想覆盖 dataGridOnCreateAutomationPeer,您必须继承 DataGrid-

public class MyDataGrid : DataGrid
{
protected override AutomationPeer OnCreateAutomationPeer()
{
return null;
}
}

在 xaml 中,使用您的自定义数据网格

<local:MyDataGrid x:Name="dataGrid"/>

并且在您的 UserControl 的构造函数中 -

public CDocumentChecklistView()
{
InitializeComponent();
AutomationPeer a = UIElementAutomationPeer.CreatePeerForElement(dataGrid);
}

您需要请求 AutomationPeer 来命中断点。这不正是您想要的吗?

这就是您缺少的 - UIElementAutomationPeer.CreatePeerForElement(dataGrid);

关于c# - WPF 和 C# : Create an override for a datagrid within a user control?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com