0

カスタムWPFコントロール内のWPFToolkitDataGridイベントのサブクラス化とオーバーライドに問題があります。これはすべて、.NETFramework3.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 に答える