2012-10-23 1 views
0

사용자 지정 WPF 컨트롤 내에서 WPFToolkit DataGrid 이벤트를 서브 클래 싱하고 재정의하는 데 문제가 있습니다. 이 .NET 프레임 워크 WPF에 대한 모든 3.5WPFToolkit Datagrid 사용자 정의 컨트롤에서 재정의 하시겠습니까? 하위 클래스 도움말

내 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에 하위 클래스를 포함하고 재정의가 실행되는지 확인하려면 어떻게해야합니까 ???

답변

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"> 
+0

이 외에도 다른 방법이 있습니까? 내 그리드는 사용자 컨트롤에 있기 때문에 제안한 솔루션을 매우 어렵게 만드는 많은 명령과 바인딩이 있습니다. 차라리 내 기존 클래스와 DataGrid의 하위 클래스를 사용하여 수행 할 것입니다. –

+0

다른 모든 명령과 바인딩을 변경하지 않아야합니다. override 메서드를 코드 숨김에서 꺼내서 DataGrid에서 상속하는 클래스에 넣습니다. 기존 DataGrid 대신 상속 된 DataGrid를 사용하십시오. 그것은 변화의 범위에 있어야합니다. –