也是由于没用足够时间在查找相关书籍知识上,导致项目进程一直拖延不前,惭愧惭愧;
关于之前的展示制作在这里做一个修正:
1.以前的通过进程将两个window联系起来着实麻烦而且是两个项目,无法很好的共用,所以修改为添加新窗口,操作界面如下:
在红色圈部分右键--添加--窗口即可得到一个与MainWindow一个级别的window窗口;
窗口转换可通过.Show()事件实现;
接下来就是保存用户操作数据到xml以及查看数据通过xml;
我用的是保存和修改xml文件的形式;
xml文件如何与xaml之间数据交换绑定我的博客随笔:WPF中后台存储数据方法一XML有一定的解释;
在这里第二步也具体的解释一下:
1 <Window x:Class="CuirriculumBegin.editwin" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 Title="editwin" Height="500" Width="400"> 5 <Grid> 6 <TextBlock HorizontalAlignment="Left" Margin="14,113,0,0" TextWrapping="Wrap" Text="New Class Name:" VerticalAlignment="Top" Height="30" Width="139" RenderTransformOrigin="0.537,0.527" FontFamily="Malgun Gothic" FontSize="16" FontWeight="Bold"/> 7 <TextBox x:Name="course_name_box" HorizontalAlignment="Left" Height="23" Margin="153,113,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="213" FontSize="16" FontFamily="News706 BT"/> 8 <TextBlock HorizontalAlignment="Left" Margin="14,282,0,0" TextWrapping="Wrap" Text="Class Time:" VerticalAlignment="Top" Height="30" Width="92" RenderTransformOrigin="0.543,0.696" FontFamily="Malgun Gothic" FontSize="16" FontWeight="Bold"/> 9 10 <TextBlock HorizontalAlignment="Left" Margin="83,169,0,0" TextWrapping="Wrap" Text="Teacher:" VerticalAlignment="Top" Height="30" Width="70" RenderTransformOrigin="0.537,0.527" FontFamily="Malgun Gothic" FontSize="16" FontWeight="Bold"/>11 <TextBox x:Name="teacher_name_box" HorizontalAlignment="Left" Height="23" Margin="153,169,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="213" FontSize="16" FontFamily="News706 BT" />12 <TextBlock HorizontalAlignment="Left" Margin="101,225,0,0" TextWrapping="Wrap" Text="Place:" VerticalAlignment="Top" Height="30" Width="52" RenderTransformOrigin="0.537,0.527" FontFamily="Malgun Gothic" FontSize="16" FontWeight="Bold"/>13 <TextBox x:Name="place_box" HorizontalAlignment="Left" Height="23" Margin="153,225,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="213" FontSize="16" FontFamily="News706 BT"/>14 <Button x:Name="save" Content="Save" HorizontalAlignment="Left" Margin="46,387,0,0" VerticalAlignment="Top" Width="75" Click="save_Click"/>15 <Button Content="Exit" HorizontalAlignment="Left" Margin="291,387,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>16 <ComboBox x:Name="combobox1" HorizontalAlignment="Left" Margin="123,282,0,0" VerticalAlignment="Top" Width="90">17 <ComboBoxItem>18 <TextBlock x:Name="one">星期一</TextBlock>19 </ComboBoxItem>20 <ComboBoxItem>21 <TextBlock x:Name="two">星期二</TextBlock>22 </ComboBoxItem>23 <ComboBoxItem>24 <TextBlock x:Name="three">星期三</TextBlock>25 </ComboBoxItem>26 <ComboBoxItem>27 <TextBlock x:Name="four">星期四</TextBlock>28 </ComboBoxItem>29 <ComboBoxItem>30 <TextBlock x:Name="five">星期五</TextBlock>31 </ComboBoxItem>32 <ComboBoxItem>33 <TextBlock x:Name="six">星期六</TextBlock>34 </ComboBoxItem>35 <ComboBoxItem>36 <TextBlock x:Name="seven">星期日</TextBlock>37 </ComboBoxItem>38 </ComboBox>39 <ComboBox x:Name="combobox2" HorizontalAlignment="Left" Margin="241,282,0,0" VerticalAlignment="Top" Width="125">40 <ComboBoxItem>41 <TextBlock x:Name="time1">上午第一节课</TextBlock>42 </ComboBoxItem>43 <ComboBoxItem>44 <TextBlock x:Name="time2">上午第二节课</TextBlock>45 </ComboBoxItem>46 <ComboBoxItem x:Name="time3">47 <TextBlock>上午第三节课</TextBlock>48 </ComboBoxItem>49 <ComboBoxItem x:Name="time4">50 <TextBlock>上午第四节课</TextBlock>51 </ComboBoxItem>52 <ComboBoxItem x:Name="time5">53 <TextBlock>下午第一节课</TextBlock>54 </ComboBoxItem>55 <ComboBoxItem>56 <TextBlock x:Name="time6">下午第二节课</TextBlock>57 </ComboBoxItem>58 <ComboBoxItem>59 <TextBlock x:Name="time7">下午第三节课</TextBlock>60 </ComboBoxItem>61 <ComboBoxItem>62 <TextBlock x:Name="time8">下午第四节课</TextBlock>63 </ComboBoxItem>64 <ComboBoxItem>65 <TextBlock x:Name="time9">晚上</TextBlock>66 </ComboBoxItem>67 </ComboBox>68 <Button Content="DeleteALL" HorizontalAlignment="Left" Margin="165,387,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>69 </Grid>70 </Window>
这是一个简单的对话框界面;
1 public void CreateXMLDocument() 2 { 3 XmlDocument xmlDoc = new XmlDocument(); 4 5 //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?> 6 XmlDeclaration xmlDeclar; 7 xmlDeclar = xmlDoc.CreateXmlDeclaration("1.0", "gb2312", null); 8 xmlDoc.AppendChild(xmlDeclar); 9 10 XmlElement xmlElement = xmlDoc.CreateElement("", "Courses", "");11 xmlDoc.AppendChild(xmlElement);12 13 //添加节点14 XmlNode root = xmlDoc.SelectSingleNode("Courses");15 xmlDoc.Save("../../Courses.xml");//保存的路径16 }
添加节点到已有xml:
1 public void addtoxml(string teacher_name, string course_name, string place, string timerow, string timecol) 2 { 3 XmlDocument xmlDoc = new XmlDocument(); 4 xmlDoc.Load("../../Courses.xml");//找到xml文件 5 XmlNode root = xmlDoc.SelectSingleNode("Courses"); 6 XmlElement xe1 = xmlDoc.CreateElement("course"); 7 xe1.SetAttribute("teacher_name", teacher_name); 8 xe1.SetAttribute("course_name", course_name); 9 xe1.SetAttribute("place", place);10 xe1.SetAttribute("timerow", timerow);11 xe1.SetAttribute("timecol", timecol);12 root.AppendChild(xe1);13 xmlDoc.Save("../../Courses.xml");14 }
删除xml节点:
1 public void DeleteNode() 2 { 3 XmlDocument xmlDocument = new XmlDocument(); 4 xmlDocument.Load("../../Courses.xml"); 5 6 XmlNodeList xnl = xmlDocument.SelectSingleNode("Courses").ChildNodes; 7 8 foreach (XmlNode xn in xnl) 9 {10 if (xn.Name == "course")11 {12 XmlElement xe = (XmlElement)xn;//将xn的属性转换为XmlElement13 xe.RemoveAttribute("teacher_name");14 xe.RemoveAttribute("course_name");15 xe.RemoveAttribute("place");16 xe.RemoveAttribute("timerow");17 xe.RemoveAttribute("timecol");18 }19 }20 xmlDocument.Save("../../Courses.xml");21 }
具体的操作解释见博客:http://www.jb51.net/article/56289.htm
在我的save按钮中的点击事件中添加如下代码即可:
1 private void save_Click(object sender, RoutedEventArgs e) 2 { 3 CreateXMLDocument(); 4 string timerow = "0", timecol = "0"; 5 switch (combobox1.Text) 6 { 7 case "星期一": timecol = "1"; break; 8 case "星期二": timecol = "2"; break; 9 case "星期三": timecol = "3"; break;10 case "星期四": timecol = "4"; break;11 case "星期五": timecol = "5"; break;12 case "星期六": timecol = "6"; break;13 case "星期日": timecol = "7"; break;14 default: MessageBox.Show("非法输入!"); break;15 }16 switch (combobox2.Text)17 {18 case "上午第一节课": timerow = "1"; break;19 case "上午第二节课": timerow = "2"; break;20 case "上午第三节课": timerow = "3"; break;21 case "上午第四节课": timerow = "4"; break;22 case "下午第一节课": timerow = "5"; break;23 case "下午第二节课": timerow = "6"; break;24 case "下午第三节课": timerow = "7"; break;25 case "下午第四节课": timerow = "8"; break;26 case "晚上": timerow = "9"; break;27 default: MessageBox.Show("非法输入!"); break;28 }29 addtoxml(teacher_name_box.Text, course_name_box.Text, place_box.Text, timerow, timecol);30 }
我创建了三个窗口:
一个是MainWindow就是我的母体窗口也就是我在课程表WPF制作 学习步骤二中的窗口;
一个是editwin窗口就是上面的窗口;
一个是Window1窗口,就是中的课程表WPF制作 学习步骤一主界面
二、XAML与XML的数据绑定
具体的XML与XAML数据绑定是在我的Window1窗口中实现的,也就是说主界面需要与数据进行绑定,代码如下:
1 <Window x:Class="CuirriculumBegin.window1" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 Title="window1" WindowState="Maximized"> 5 <Window.Resources> 6 <XmlDataProvider x:Key="course-info" Source="Courses.xml" XPath="/Courses/*"></XmlDataProvider> 7 </Window.Resources> 8 <Grid> 9 <Grid DataContext="{Binding Source={StaticResource course-info}}">10 <Grid.RowDefinitions >11 <RowDefinition Height="90"></RowDefinition>12 <RowDefinition></RowDefinition>13 <RowDefinition></RowDefinition>14 <RowDefinition></RowDefinition>15 <RowDefinition></RowDefinition>16 <RowDefinition></RowDefinition>17 <RowDefinition Height="40"></RowDefinition>18 </Grid.RowDefinitions>19 <Grid.ColumnDefinitions>20 <ColumnDefinition Width="100"></ColumnDefinition>21 <ColumnDefinition></ColumnDefinition>22 <ColumnDefinition></ColumnDefinition>23 <ColumnDefinition></ColumnDefinition>24 <ColumnDefinition></ColumnDefinition>25 <ColumnDefinition></ColumnDefinition>26 <ColumnDefinition></ColumnDefinition>27 <ColumnDefinition></ColumnDefinition>28 </Grid.ColumnDefinitions>29 <TextBlock Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期一</TextBlock>30 <TextBlock Grid.Row="0" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期二</TextBlock>31 <TextBlock Grid.Row="0" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期三</TextBlock>32 <TextBlock Grid.Row="0" Grid.Column="4" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期四</TextBlock>33 <TextBlock Grid.Row="0" Grid.Column="5" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期五</TextBlock>34 <TextBlock Grid.Row="0" Grid.Column="6" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期六</TextBlock>35 <TextBlock Grid.Row="0" Grid.Column="7" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Foreground="#FFBD1096">星期日</TextBlock>36 <TextBlock Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20">时间段</TextBlock>37 <TextBlock Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" Text=" 8:00
 -- 
 9:35"></TextBlock>38 <TextBlock Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" Text=" 9:55
 -- 
11:30"></TextBlock>39 <TextBlock Grid.Row="3" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" Text="14:00
 -- 
15:35"></TextBlock>40 <TextBlock Grid.Row="4" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" Text="15:55
 -- 
17:30"></TextBlock>41 <TextBlock Grid.Row="5" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Text="晚上"></TextBlock>42 <Image Source="Resources\1.jpeg" Grid.ColumnSpan="8" Grid.RowSpan="7" Opacity="0.4" Stretch="Fill"/>43 <Button x:Name="edit_btn" Grid.Column="2" Grid.Row="6" Margin="0,0,5,10" HorizontalAlignment="Right" Width="110" RenderTransformOrigin="0.511,0.067" Content="Edit" IsCancel="True" BorderBrush="#FF1C84EC" Background="White" Opacity="0.5" Foreground="#FFF50808" OpacityMask="#FFF7F7F7" FontFamily="Simplified Arabic" FontSize="16" Grid.ColumnSpan="2" Click="edit_btn_Click"/>44 <Button x:Name="save_btn" Grid.Column="4" Grid.Row="6" Margin="0,0,79,10" HorizontalAlignment="Right" Width="110" RenderTransformOrigin="0.511,0.067" Content="Save" IsCancel="True" BorderBrush="#FF1C84EC" Background="White" Opacity="0.5" Foreground="#FFF50808" OpacityMask="#FFF7F7F7" FontFamily="Simplified Arabic" FontSize="16" Grid.ColumnSpan="2" Click="save_btn_Click"/>45 <StackPanel Grid.Column="{Binding [email protected]}" Grid.Row="{Binding [email protected]}">46 <TextBlock Text="{Binding [email protected]}"></TextBlock>47 <TextBlock Text="{Binding [email protected]_name}"></TextBlock>48 <TextBlock Text="{Binding [email protected]_name}"></TextBlock>49 </StackPanel>50 </Grid>51 </Grid>52 </Window>
关于XML与XAML交换的具体解释可详细见参考博客:http://blog.sina.com.cn/s/blog_3d6eb75d0100mqtl.html
这样大体的成型框架就实现了,操作:
点击Save按钮在Window1中显示如下:
那么问题来了:为什么在设计器里面xaml显示出来了数据而在运行后显示却没有???
运行后如下:
还是要继续学习。。。。。。。
Over~~