Observable Collection 'People'에 바인딩 된 listview가 있습니다. People은 'Name'속성을 가진 사람을 포함하고 있습니다.각 ListView 행에 대한 삭제 버튼
마지막 열에 나타나는이 테이블의 각 행에 대해 삭제 버튼을 갖고 싶습니다. 아래는 작동하는 구현입니다. 그러나 핸들러와 XAML은 매우 얽혀있어서 좋지 않습니다. 내가 삭제 한 사람을 어떻게 통과시킬 수 있습니까?
XAML은 :
<ListView ItemsSource="{Binding People}" Name="ListViewPeople">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumnHeader>Names</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Names}"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete" Click="Button_Click_Delete"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
나는이 핸들러와이를 구현하는 데 성공했지만, 당신이 볼 수 있듯이 그것은 백업 코드 뷰에 대해 자세히 알 수 있습니다 의미합니다. ListView에서 삭제 단추의 인덱스를 가져 와서 관측 가능한 컬렉션에서 값을 제거합니다.
C# 코드 :
private void Button_Click_Delete(object sender, RoutedEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is ListViewItem))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
int index = ListViewPeople.ItemContainerGenerator.IndexFromContainer(dep);
People.RemoveAt(index);
}
핸들러가리스트 뷰 것에 대해 알 필요하지 않도록 아마도 내 핸들러에 삭제 한 관찰 수집하는 회원을 전달하는 방법이 있나요 기타?
DataContext = "{Binding}"과 같은 DataContext에 대한 바인딩을 만들고 DataContext에있는 내용을 클릭 확인합니다. 개체가 있으면 그것을 제거 할 수 있습니다. – csharpwinphonexaml
명령과 명령 매개 변수에 대해 알고 있습니다. –