2012-10-23 65 views
0

我在WPF控件的子類化和覆蓋WPFToolkit DataGrid事件方面遇到了一些麻煩。 這是所有在WPF .NET Framework 3.5的WPFToolkit 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

所有其他命令和綁定都不需要更改。將覆蓋方法從代碼隱藏中拉出並放入從datagrid繼承的類中。使用繼承的數據網格代替現有的數據網格。這應該是變化的程度。 –