0

我在自定义 WPF 控件中对 WPFToolkit DataGrid 事件进行子类化和覆盖时遇到了一些麻烦。这一切都适用于 .NET Framework 3.5 上的 WPF

我的 XAML 类似于以下内容

<UserControl x:Class="MyGUI.EM.DocChecklistView"
    xmlns:toolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit">

<Grid>
        <toolkit:DataGrid  ItemsSource="{Binding Source={StaticResource DocVS}}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" Name="_dgDoc" Margin="0,0,0,46">

代码类似于

public partial class DocChecklistView:  UserControl, IDataModuleView {     

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

        public CDocumentChecklistView() {
            InitializeComponent();
        }

但是,请注意代码中的第一个覆盖——它永远不会触发。这是有道理的,因为我没有继承 DataGrid (WPFToolkit)。如何修改此代码以包含 DataGrid 的子类并确保覆盖触发???

4

1 回答 1

1

您可以创建自定义 DataGrid 控件。

public class CustomDataGrid:  DataGrid
{   
    protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer()
    {
        return null;
    }
}

然后在视图中使用该控件而不是 DataGrid。

<UserControl x:Class="MyGUI.EM.DocChecklistView"
    xmlns:toolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
    xmlns:yourControl="clr-namespace:YourNamespace">

    <Grid>
        <yourControl:CustomDataGrid  ItemsSource="{Binding Source={StaticResource DocVS}}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" Name="_dgDoc" Margin="0,0,0,46">
于 2012-10-24T00:27:31.300 回答