zoukankan      html  css  js  c++  java
  • WPF listview Test Message list

    UI:

    <Window x:Class="WoZhuLianyuanTool.SendContentsWind"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              mc:Ignorable="d" Name="MWind"  
             Height="366" Width="617"
            Title="MainWindow" ShowInTaskbar="False"
      WindowStyle="None" Background="{x:Null}"  AllowsTransparency="True" 
      MouseLeftButtonDown="Window_MouseLeftButtonDown" xmlns:my="clr-namespace:WoZhuLianyuanTool" WindowStartupLocation="CenterScreen"
            
         RenderTransformOrigin="0.5,0.5">
        <Window.Resources>
     
            <my:StringToBoolConverter x:Key="StringToBoolConverter1"   />
        </Window.Resources>
        <Window.RenderTransform>
            <ScaleTransform x:Name="t" ScaleX="1" ScaleY="1">
    
            </ScaleTransform>
        </Window.RenderTransform>
        <Window.Triggers>
            <EventTrigger  RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation From="0.5" To="1" Storyboard.TargetName="t" Storyboard.TargetProperty="ScaleX" Duration="0:0:2">
    
                            <DoubleAnimation.EasingFunction>
                                <ElasticEase Oscillations="3"/>
                            </DoubleAnimation.EasingFunction>
                        </DoubleAnimation>
                        <DoubleAnimation From="0.5" To="1" Storyboard.TargetName="t" Storyboard.TargetProperty="ScaleY" Duration="0:0:2">
    
                            <DoubleAnimation.EasingFunction>
                                <ElasticEase Oscillations="3"/>
                            </DoubleAnimation.EasingFunction>
                        </DoubleAnimation>
    
    
                    </Storyboard>
    
    
    
                </BeginStoryboard>
            </EventTrigger>
        </Window.Triggers>
    
    
    
    
        <Grid RenderTransformOrigin="0.5,0.5">
    
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="561*" />
                <ColumnDefinition Width="8*" />
            </Grid.ColumnDefinitions>
        
            <Border CornerRadius="10,10,10,10" Margin="10,10,2,10"  Height="Auto" BorderBrush="White" BorderThickness="6" Background="#FFEBEBEB">
                <Border.Effect>
                    <DropShadowEffect Opacity="1" ShadowDepth="4">
                    </DropShadowEffect>
                </Border.Effect>
                <Grid Name="gridParent">
                  
               
                    <Grid Name="gridTitle" Margin="0,0,0,259">
                        <Rectangle    Fill="#FFFF7AA4" Height="42" VerticalAlignment="Top" Margin="0,0,0,0"  />
    
                        <Label  Name="lbVersion"   Foreground="WhiteSmoke"   Width="362" Height="24" Content="--------" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="8,5,0,0" Background="#02E2D3D3"/>
    
    
                    </Grid>
    
                    <Grid Margin="0,42,0,0">
                         <ListView Name="listView" ItemsSource="{Binding}" Height="179" Margin="0,42,0,32">
                            
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Width="26" Header="勾选"   >
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <CheckBox Tag="{Binding id}" Unchecked="CheckBox_Unchecked" Checked="CheckBox_Checked" IsChecked="{Binding Path=isChecked2,Mode=OneTime}"></CheckBox>    
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                      
                                    </GridViewColumn>
                              
                                    <GridViewColumn   Width="458" Header="msg" DisplayMemberBinding="{Binding msg}"/>
                                    <GridViewColumn Width="66" Header="del"  >
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Button Tag="{Binding id}" Content="删除" Click="btnDel_Click"></Button>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
    
                                    </GridViewColumn>
    
    
                                </GridView>
                            </ListView.View>
                        </ListView>
                        
                        <TextBox Height="23" Margin="8,10,107,0" Name="txtMsg" VerticalAlignment="Top" /> 
                        <Button VerticalAlignment="Top" HorizontalAlignment="Right" Height="30" Width="86" Margin="0,6,5,0" Content="add" Name="btnAdd" Click="btnAdd_Click"></Button>
                        <Label VerticalAlignment="Bottom" Name ="lbStatus" Content="000"></Label>
    
                    </Grid>
                    
                    
                </Grid>
            </Border>
    
    
         
    
            <!--左上角的“X”叉形按钮-->
            <Button x:Name="x" Content="Button" HorizontalAlignment="Right" Height="24" Style="{DynamicResource XButtonStyle}" VerticalAlignment="Top" Width="46" Margin="0,18,9,0" Click="btnClose_Click" />
    
        </Grid>
    </Window>
    

      

    code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    using System.Globalization;
    
    namespace WoZhuLianyuanTool
    {
        /// <summary>
        /// Interaction logic for SendContentsWind.xaml
        /// </summary>
        public partial class SendContentsWind : Window
        {
            public SendContentsWind()
            {
                InitializeComponent();
                dbtool = new DBTools();
                listData = dbtool.LoadSendContentItems();
                listView.DataContext = listData;
                listView.ItemsSource = listData;
                lbStatus.Content = "共" + listData.Count + "项,已选" + listData.Count(n => n.isChecked2 == true);
                Loaded += new RoutedEventHandler(SendContentsWind_Loaded);
    
            }
            List<SendContentItem> listData = null;
            DBTools dbtool = null;
            void SendContentsWind_Loaded(object sender, RoutedEventArgs e)
            {
               
            }
    
            private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                DragMove();
            }
    
            private void btnClose_Click(object sender, RoutedEventArgs e)
            {
                Close();
            }
    
            private void btnAdd_Click(object sender, RoutedEventArgs e)
            {
    
                if (txtMsg.Text.Trim() == "") return;
                dbtool.AddSendContentItem(new SendContentItem (){ id=Guid.NewGuid().ToString(), isChecked="True", msg=txtMsg.Text });
                txtMsg.Text = "";
                updateList();
                listView.ScrollIntoView(listView.Items[listView.Items.Count -1]);
    
            }  
            private void btnDel_Click(object sender, RoutedEventArgs e)
            {
                 dbtool.DelSendContentItem("" + (sender as Button  ).Tag);
                 updateList();
            }
            private void CheckBox_Checked(object sender, RoutedEventArgs e)
            {
              //  MessageBox.Show(""+(sender as CheckBox).IsChecked);
                  dbtool.UpdateSendContentItem("" + (sender as CheckBox).Tag,(bool )(sender as CheckBox).IsChecked);
                  updateList2();
    
            }
    
            private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
            {
                CheckBox ck=(sender as CheckBox);
                //MessageBox.Show("" + (sender as CheckBox).IsChecked);
                dbtool.UpdateSendContentItem(""+ck.Tag,(bool)ck.IsChecked);
                updateList2();
            }
    
        
    
    
    
           private   void updateList() {
    
                listData = dbtool.LoadSendContentItems();
                listView.ItemsSource = listData;
                lbStatus.Content = "共" + listData.Count + "项,已选" + listData.Count(n=>n.isChecked2==true );
            }
    
           private void updateList2()//not rebind
           {
               listData = dbtool.LoadSendContentItems();
               lbStatus.Content = "共" + listData.Count + "项,已选" + listData.Count(n=>n.isChecked2 ==true);
           }
    
    
    
    
    
        }
    
    
    
    
        public class StringToBoolConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if (value==null)
                {
                    return true;
                }
               // int val = System.Convert.ToInt32(value);
                bool b=true ;
                if (value.ToString() == "0" || value.ToString().ToLower() == "false") {
    
                    b = false;
                }
    
                if (value.ToString() == "1" || value.ToString().ToLower() == "true")
                {
    
                    b = false;
                }
    
    
                return b;
            }
    
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if (value==null)
                {
                    return "0";
                }
    
    
                return ((bool)value) ? "true" : "false";
            }
        }
    
    
    }
    

      

     DBTool class:

            //---------------------------------------------------------------------------
    
    
            public bool CreateTable_SendContent()
            {
    
                bool isOK = false;
                string strCmd = "";
                SQLiteConnection conn = new SQLiteConnection(strConn);
                try
                {
    
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }
    
                    SQLiteCommand cmd = new SQLiteCommand();
                    cmd.Connection = conn;
                    SQLiteTransaction myTrans;
    
                    strCmd = @"select count(1) cnt from sqlite_master where type='table' and name = 'SendContent' ";
                    cmd.CommandText = strCmd;
                    int cnt = int.Parse("" + cmd.ExecuteScalar());
                    if (cnt <= 0)
                    {//add table 
                         // Start a local transaction
                        myTrans = conn.BeginTransaction(System.Data.IsolationLevel.Serializable);
                        cmd.Transaction = myTrans;
                        strCmd = @"ALTER TABLE members ADD flag_no_ReSend integer DEFAULT 0"; 
                        strCmd = @"create table SendContent(id text,msg text,isChecked text,primary key (id))"; 
                        cmd.CommandText = strCmd;
                        cmd.ExecuteNonQuery();  
                        cmd.Transaction.Commit();  
                        FillTableSendContent();// fill test content
                    }
                    isOK = true;
    
                
    
                }
    
                catch (Exception ex)
                {
    
    
                    if (conn.State != ConnectionState.Closed)
                    {
                        conn.Close();
    
                    }
                    isOK = false;
                    MessageBox.Show("SendContent:" + ex.Message);
       
    
                }
    
                return isOK;
    
    
            }
    
            /// <summary>
            /// fill test contents
            /// </summary>
            /// <returns></returns>
            public  bool FillTableSendContent()
            {
    
                bool isOK = false;
                string strCmd = "";
                SQLiteConnection conn = new SQLiteConnection(strConn);
                try
                {
    
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }
    
                    SQLiteCommand cmd = new SQLiteCommand();
                    cmd.Connection = conn;
                    SQLiteTransaction myTrans;
                    // Start a local transaction
                    myTrans = conn.BeginTransaction(System.Data.IsolationLevel.Serializable);
                    cmd.Transaction = myTrans;
                    strCmd = @"insert into SendContent(id,msg,isChecked) select '"+ Guid.NewGuid().ToString()+"','test msg','1'";
                    cmd.CommandText = strCmd;
                    cmd.CommandText = strCmd;
                    cmd.ExecuteNonQuery();
                    cmd.Transaction.Commit();
                    isOK = true;
                }
    
                catch (Exception ex)
                {
    
    
                    if (conn.State != ConnectionState.Closed)
                    {
                        conn.Close();
    
                    }
                    isOK = false;
                    MessageBox.Show("SendContent:" + ex.Message);
    
    
                }
    
                return isOK;
    
    
            }
    
    
            public List<SendContentItem> LoadSendContentItems() {
    
                List<SendContentItem> list = new List<SendContentItem>();
                DataTable tb = getTable("select * from SendContent");
                if(tb!=null && tb.Rows.Count>0){
                    foreach (DataRow r in tb.Rows) {
                        list.Add(new SendContentItem() { id = "" + r["id"], msg = "" + r["msg"], isChecked = "" + r["isChecked"] });
                    
                    }
                     
                 }
    
                return list;
    
            }
    
    
            public bool UpdateSendContentItem(string id, bool isChecked, string  newMsg="")
            {
    
                int i = 0;
                if (newMsg == "")
                {
                    i = ExeSql("update  SendContent set isChecked='" + isChecked + "' where id='" + id + "'");
                }
                else {
                    i = ExeSql("update  SendContent set msg='"+ newMsg +"', isChecked='" + isChecked + "' where id='" + id + "'");
                }
                return i> 0;
              
            }
    
    
            public  bool AddSendContentItem(SendContentItem item){
               int i = 0;
               i = ExeSql( @"insert into SendContent(id,msg,isChecked) select '"+ Guid.NewGuid().ToString()+"','"+item.msg +"','"+ item.isChecked+"'");
              return i > 0;
    
            }
            public bool DelSendContentItem(string id )
            {
               int i = 0;
               i = ExeSql( @"delete from SendContent  where id='"+ id +"'");
              return i > 0;
    
            }
    
    
            
    
            //---------------------------------------------------------------------------
    
    
      public class SendContentItem {
     
            public string id { get; set; }
            public string msg { get; set; }
            public string  isChecked  { get; set; }
            public bool isChecked2 {
                
                get{
                    return isChecked=="1" || isChecked.ToLower()=="true";
                }
                set{
                
                }
            
            }
      
    
        
        }
    

      

  • 相关阅读:
    BZOJ 2069 POI2004 ZAW 堆优化Dijkstra
    浏览器大小屏适配的方法
    编译性语言&amp;解释性语言
    ubuntu 查看网卡 数据包处理 速度
    使用Newtonsoft JsonConvert反序列化Json数据到DataTable
    easyUI datagrid view扩展
    easyUI layout 中使用tabs+iframe解决请求两次方法
    oracle自定义判断数据是否为数值函数
    easyUI datagrid editor扩展dialog
    JavaScript格式化日期
  • 原文地址:https://www.cnblogs.com/wgscd/p/9843991.html
Copyright © 2011-2022 走看看