2017-06-06 300 views
1

的功能,我有一個WPF DataGrid中有一列:覆蓋複製過去一個WPF網格視圖

<DataGrid Name="myGRID"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="myHeader Binding="{Binding myObservableCollection}"> 
      <DataGridTextColumn.HeaderStyle> 
       <Style TargetType="DataGridColumnHeader"> 
        <Setter Property="HorizontalContentAlignment" Value="Center" /> 
       </Style> 
      </DataGridTextColumn.HeaderStyle> 
      <DataGridTextColumn.ElementStyle> 
       <Style TargetType="TextBlock"> 
        <Setter Property="HorizontalAlignment" Value="Center" /> 
       </Style> 
      </DataGridTextColumn.ElementStyle> 
      <DataGridTextColumn.EditingElementStyle> 
       <Style TargetType="{x:Type TextBox}"> 
        <EventSetter Event="TextChanged" Handler="tbx_ConcernEnter_TextChanged"/> 
       </Style> 
      </DataGridTextColumn.EditingElementStyle> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

現在我要重寫行的粘貼功能。 當我使用:

<DataGrid> 
<CommandBinding Command="Paste" Executed="CommandBinding_Executed"/> 
</DataGrid> 

這似乎是整個GridView的,但不是爲特定的行覆蓋。

你知道如何覆蓋它嗎?

+0

特定行?你的意思是一個特定的列嗎? – mm8

+0

不,我想單擊到我的gridview的特定行並說「過去」爲例。這應該在我的代碼隱藏中調用一個函數 –

+0

這應該發生在你點擊任何*行然後,對嗎?這和「這似乎是整個GridView的覆蓋而不是特定的行」有什麼區別? – mm8

回答

3

TextBoxCellEditingTemplate「吞下」粘貼命令。但是你可以處理Loaded事件爲TextBox和掛鉤一個Pasting事件處理它:

<DataGridTextColumn.EditingElementStyle> 
    <Style TargetType="{x:Type TextBox}"> 
     <EventSetter Event="TextChanged" Handler="tbx_ConcernEnter_TextChanged"/> 
     <EventSetter Event="Loaded" Handler="TextBox_Loaded" /> 
    </Style> 
</DataGridTextColumn.EditingElementStyle> 

private void TextBox_Loaded(object sender, RoutedEventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    DataObject.AddPastingHandler(textBox, OnPaste); 
} 

private void OnPaste(object sender, DataObjectPastingEventArgs e) 
{ 
    //paste detected... 
} 
+0

它有效。非常感謝mm8,耐心等待! –