wpf listViewにはbuttonが含まれており、選択した行を編集するために使用されます.

24881 ワード

  • 需要:listViewのデータに対して選択行
  • を削除する
  • ソリューションはlistviewにbuttonの列を直接追加し、クリックを実現するために選択した行
  • を削除します.
  • コードxamlファイル
  • <Window x:Class="WpfApp2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp2"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
    
            <StackPanel>
                <Button x:Name="loadBtn" Content=" " Click="LoadBtn_Click" Margin="20" Width="200"/>
    
                <Border BorderBrush="Orange" BorderThickness="5" CornerRadius="6" Padding="4">
                <ListView x:Name="list" ItemsSource="{Binding ShowList}" Height="333" Margin="0.2,0,-0.2,0">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="ID" Width="50"  DisplayMemberBinding="{Binding Id}"/>
                            <GridViewColumn Header="QrStart" Width="100"   DisplayMemberBinding="{Binding QrStart}" />
                            <GridViewColumn Header="QR" Width="100"   DisplayMemberBinding="{Binding Qr}"/>
                            <GridViewColumn Header="STATE" Width="100"  DisplayMemberBinding="{Binding Res}" />
                            <GridViewColumn Header="Time" Width="100"  DisplayMemberBinding="{Binding Span}" />
                            <GridViewColumn Header=" " Width="100" >
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <Button Content=" " x:Name="deleteBtn" Click="DeleteBtn_Click"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
    
                        </GridView>
                    </ListView.View>
                </ListView>
            </Border>
            </StackPanel>
    
        </Grid>
    </Window>
    
    

    バックグラウンドコード
    using System.Windows;
    using System.Windows.Controls;
    
    namespace WpfApp2
    {
         
        /// 
        /// Interaction logic for MainWindow.xaml
        /// 
        public partial class MainWindow : Window
        {
         
            public MainWindow()
            {
         
                InitializeComponent();
    
                /// 
                this.list.ItemsSource = _bindingClass.ShowList;
    
            }
    
            private viewmodel.BindingClass _bindingClass = new viewmodel.BindingClass();
            private void DeleteBtn_Click(object sender, RoutedEventArgs e)
            {
         
                // 
                var btn = sender as Button;
                var c = btn.DataContext as viewmodel.CShowTag;
                int index = int.Parse(c.Id);
                this.list.Items.GetItemAt(index); 
                MessageBoxResult boxResult =  MessageBox.Show($" :id={c.Id},Qr={c.Qr}  ?"," ", MessageBoxButton.YesNo,MessageBoxImage.Question);
                if (boxResult == MessageBoxResult.Yes)
                {
         
                    _bindingClass.ShowList.Remove(c);
                    this.list.Items.Refresh();
                }
                return;
            }
    
            /// 
            ///  
            /// 
            /// 
            /// 
            private void LoadBtn_Click(object sender, RoutedEventArgs e)
            {
         
                _bindingClass.LoadData();
            }
        }
    }
    
    

    类文件

    /*************************************************************************************
      * CLR : 4.0.30319.42000
      *   : BindingClass
      * : 8/31/2020 10:34:33 AM
      *     : zhx 
     * : 
     *************************************************************************************/
    
    using System.Collections.ObjectModel;
    
    namespace WpfApp2.viewmodel
    {
         
        public class BindingClass
        {
         
            public BindingClass()
            {
         
                ShowList = new ObservableCollection<CShowTag>();
            }
    
            public ObservableCollection<CShowTag> ShowList
            {
         
                set;
                get;
            }
    
            public void LoadData()
            {
         
                for (int i = 0; i < 10; i++)
                {
         
                    CShowTag tag = new CShowTag()
                    {
         
                        Id=(i+1).ToString(),
                        Qr="33333",
                        QrStart="1111",
                        Res="0",
                        Span="33"
                    };
                    ShowList.Insert(0,tag);
                }
                
            }
        }
    }
    
    /*************************************************************************************
      * CLR : 4.0.30319.42000
      *   : CShowTag
      * : 8/31/2020 10:29:08 AM
      *     : zhx 
     * : 
     *************************************************************************************/
    
    
    namespace WpfApp2.viewmodel
    {
         
        public class CShowTag
        {
         
            public string Id
            {
         
                get => id;
                set => id = value;
            }
       
            private string id;
          
       
            private string qr;
        
            private string res;
    
            public string QrStart
            {
         
                get; set;
            }
           
    
            public string Qr
            {
         
                get => qr;
                set => qr = value;
            }
    
            public string Res
            {
         
                get => res;
                set => res = value;
            }
    
            public string Span
            {
         
                get => span;
                set => span = value;
            }
    
            private string span;
        }
    }