2017-07-22 4 views
0

私はデータグリッドにバインドされたリストを持っています。 のXMLデータグリッドのコードは次のとおりです。ListにバインドされているDataGridから選択した行を削除するにはどうすればよいですか?

<DataGrid x:Name="Mydg" Margin="5" CanUserAddRows="False" IsReadOnly="True" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Host IP" Binding="{Binding Ip}"></DataGridTextColumn> 
      <DataGridTextColumn Header="Host Name" Binding="{Binding Name}"></DataGridTextColumn> 
      <DataGridTextColumn Header="Port" Binding="{Binding Port}"></DataGridTextColumn> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock> 
          <Hyperlink Name="hlRmv" Click="HlRmv_OnClick">Remove</Hyperlink> 
         </TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

のC#:

... 
Mydg.ItemsSource=psList; 
... 

"HlRmv_OnClick" で私がクリックした行を削除することができますか?

+0

クリックイベントでは、あなたが送信者の引数フォームタグを取得しますクリックしたときに、この

<Hyperlink Name="hlRmv" Click="HlRmv_OnClick" Tag="{Binding Ip}">Remove</Hyperlink> 

のようなタグを追加することができます'wpf'の' DataGrid'で作業するのは面倒な作業です。選択した行を '(DataGridRow)mygrid.ItemContainerGenerator.ContainerFromItem(mygrid.SelectedItem);' mygrid'はデータグリッドです –

+0

私はあなたが最初にいくつかのコレクションにxmlをロードしてから、それをDataGridにバインドしていると思いますコードの背後にある?私は直接XMLバインディングのXpathを見ることができません。 – Ramankingdom

答えて

0
このラインで

<Hyperlink Name="hlRmv" Click="HlRmv_OnClick">Remove</Hyperlink> 

あなたは、私が個人的に感じ

private void HlRmv_OnClick(object sender, RoutedEventArgs e) 
    { 
     var link = sender as Hyperlink; 
     var Ip = link.Tag as string; 
     // your logic of removing the code here. Reload collection 
     var result = psList.Where(item => item.Ip.Equals(Ip)); 
     psList.Remove(result); 

    } 
+0

ありがとう。それは正常に動作します – rzb

+0

@rzb答えをマークするのを忘れていません – Ramankingdom

関連する問題