zoukankan      html  css  js  c++  java
  • WPF系列

    一、ListView绑定数据源XML

     //前端代码
    1
    <Window x:Class="ListView读取XML数据.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" 3 Height="350" Width="525"> 4 <Window.Resources> 5 <XmlDataProvider x:Key="Student" Source="Book.xml"> 6 </XmlDataProvider> 7 </Window.Resources> 8 <Grid> 9 <ListView ItemsSource="{Binding Source={StaticResource Student},XPath=/Person/Information}"> 10 </ListView> 11 </Grid> 12 </Window>
     //XML文件
    1
    <?xml version="1.0" encoding="utf-8" ?> 2 <Person> 3 <Information> 4 <Name>张三</Name> 5 <Age>22</Age> 6 <Sex></Sex> 7 </Information> 8 <Information> 9 <Name>李四</Name> 10 <Age>25</Age> 11 <Sex></Sex> 12 </Information> 13 </Person>
    //效果截图
    
    

     二、保存数据到XML

     1             XmlDocument xml = new XmlDocument();
     2             string str_path = @"J:WPF	estXMLData.xml";
     3             XmlNode root = null; 
     4             if (File.Exists(str_path))
     5             {
     6                 xml.Load(str_path);
     7                 root = xml.SelectSingleNode("Person");
     8             }
     9             
    10             XmlNodeList nodelist = xml.SelectNodes("/Person/Student/Infor");
    11             XmlElement inf,adr, stu, info, UN, IP, DB;
    12             bool bl_exist = true;
    13             foreach (XmlNode node in nodelist)
    14             {
    15                 if (node.ChildNodes[1].InnerText == (ServerName.Text + ".").ToString() &&
    16                     node.ChildNodes[0].InnerText == (UserName.Text + ".").ToString() && 
    17                     node.ChildNodes[2].InnerText ==DataName.Text)
    18                 {
    19                     bl_exist = false;
    20                     break;
    21                 }
    22             }
    23             if (bl_exist)
    24             {
    25                 stu = xml.CreateElement("Student"); //创建元素
    26                 info = xml.CreateElement("Infor");
    27                 UN = xml.CreateElement("UserName");
    28                 IP = xml.CreateElement("IP");
    29                 DB = xml.CreateElement("DataBaseName");
    30 
    31                 inf = xml.CreateElement("Information");
    32                 adr = xml.CreateElement("Address");
    33                 adr.InnerText = (UserName.Text + "." + ServerName.Text + "." + DataName.Text).ToString();
    34                 root.AppendChild(inf);
    35                 inf.AppendChild(adr);
    36 
    37                 UN.InnerText = (UserName.Text + ".").ToString();
    38                 IP.InnerText = (ServerName.Text + ".").ToString();
    39                 DB.InnerText = DataName.Text;
    40                 stu.AppendChild(info);
    41                 info.AppendChild(UN);
    42                 info.AppendChild(IP);
    43                 info.AppendChild(DB);
    44                 root.AppendChild(stu);
    45                 MessageBox.Show("数据保存成功");
    46             }
    47             xml.Save(str_path);   

     三、页面切换出现淡入淡出效果和图表控件页面重新加载动画

    1、把Window窗口改为NavigationWindow导航切换窗口,添加源文件Market.xaml
    <NavigationWindow x:Class="MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="1080" Width="3840" WindowState="Maximized"  Source="Market.xaml" WindowStyle="None" ShowsNavigationUI="False" ResizeMode="NoResize" Navigating="NavigationWindow_Navigating" 
            MouseLeftButtonDown="NavigationWindow_MouseLeftButtonDown">
    </NavigationWindow>
    
    2、下一个页面切换的时候用以下代码就可实现:
    NavigationService.Navigate(new Uri("Power.xaml", UriKind.Relative));

    3、淡入淡出效果
            private void NavigationWindow_Navigating(object sender, NavigatingCancelEventArgs e)
            {
                if (Content != null && !_allowDirectNavigation)
                {
                    e.Cancel = true;
                    _navArgs = e;
                    this.IsHitTestVisible = false;
                    DoubleAnimation da = new DoubleAnimation(0.3d, new Duration(TimeSpan.FromMilliseconds(100)));
                    da.Completed += FadeOutCompleted;
                    this.BeginAnimation(OpacityProperty, da);
                }
                _allowDirectNavigation = false;
            }
            private void FadeOutCompleted(object sender, EventArgs e)
            {
                (sender as AnimationClock).Completed -= FadeOutCompleted;
    
                this.IsHitTestVisible = true;
    
                _allowDirectNavigation = true;
                switch (_navArgs.NavigationMode)
                {
                    case NavigationMode.New:
                        if (_navArgs.Uri == null)
                        {
                            NavigationService.Navigate(_navArgs.Content);
                        }
                        else
                        {
                            NavigationService.Navigate(_navArgs.Uri);
                        }
                        break;
                    case NavigationMode.Back:
                        NavigationService.GoBack();
                        break;
    
                    case NavigationMode.Forward:
                        NavigationService.GoForward();
                        break;
                    case NavigationMode.Refresh:
                        NavigationService.Refresh();
                        break;
                }
    
                Dispatcher.BeginInvoke(DispatcherPriority.Loaded,
                    (ThreadStart)delegate()
                    {
                        DoubleAnimation da = new DoubleAnimation(1.0d, new Duration(TimeSpan.FromMilliseconds(100)));
                        this.BeginAnimation(OpacityProperty, da);
                    });
            }
            private bool _allowDirectNavigation = false;
            private  NavigatingCancelEventArgs _navArgs = null;
  • 相关阅读:
    HTTP协议 学习笔记一
    web发展历史
    Easydarwin加FFMPEG实现HLS流视频点播
    C# Socket异步实现消息发送--附带源码
    C# Activex调用USB摄像头--附带源码
    C# listbox DataSource数据绑定--一年半以前的bug
    ASP.NET MVC WebAPI实现文件批量上传
    ASP.NET MVC使用SignalR统计在线用户人数
    Chart.js Y轴数据以百分比展示
    Java获取字符串信息
  • 原文地址:https://www.cnblogs.com/772933011qq/p/4798504.html
Copyright © 2011-2022 走看看