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.Navigation; using System.Windows.Shapes; using System.Xml.Serialization; using System.IO; namespace Test { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Loaded += new RoutedEventHandler(MainWindow_Loaded); dataGrid1.DataContext = list; // dataGrid1.ItemsSource = list; } List<msgitem> list = new List<msgitem>(); void MainWindow_Loaded(object sender, RoutedEventArgs e) { loadMsgItems(); } void loadMsgItems() { dataGrid1.ItemsSource = null; list = (List<msgitem>)LoadFromXml("d:\1.xml", list.GetType()); dataGrid1.ItemsSource = list; // list.Add(new msgitem() { isSelect=false, msg="test ..d第三方第三方?、工业投入也太容易>/....." }); // list.Add(new msgitem() { isSelect = true, msg = "test .d第三方第三方?、工业投入也太容&&***//222......." }); // dataGrid1.ItemsSource = null ; // dataGrid1.ItemsSource = list; } private void button1_Click(object sender, RoutedEventArgs e) { SaveToXml("d:\1.xml", list); dataGrid1.ItemsSource = null; list = (List<msgitem>)LoadFromXml("d:\1.xml", list.GetType()); dataGrid1.ItemsSource = list; } void SaveToXml(string filePath, object sourceObj ) { if (!string.IsNullOrWhiteSpace(filePath) && sourceObj != null) { using (StreamWriter writer = new StreamWriter(filePath)) { System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(sourceObj.GetType()); XmlSerializerNamespaces nameSpace = new XmlSerializerNamespaces(); nameSpace.Add("", ""); //not ot output the default namespace xmlSerializer.Serialize(writer, sourceObj, nameSpace); } } } object LoadFromXml(string filePath, Type type) { object result = null; if (File.Exists(filePath)) { using (StreamReader reader = new StreamReader(filePath)) { System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type); result = xmlSerializer.Deserialize(reader); } } return result; } private void CheckBox_MouseDoubleClick(object sender, MouseButtonEventArgs e) { } } }
UI:
<Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid Height="215" Margin="23,96,0,0" Name="grid1" VerticalAlignment="Top"> <Grid.ColumnDefinitions> <ColumnDefinition Width="321*" /> <ColumnDefinition Width="130*" /> </Grid.ColumnDefinitions> <ListBox SelectionMode="Single" Margin="6" Name="dataGrid1" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled" > <ListBox.ItemTemplate> <DataTemplate> <CheckBox MouseDoubleClick="CheckBox_MouseDoubleClick" Content="{Binding msg}" Width="444" IsChecked="{Binding isSelect}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> <Button Content="Button" Height="31" HorizontalAlignment="Left" Margin="28,59,0,0" Name="button1" VerticalAlignment="Top" Width="149" Click="button1_Click" /> </Grid> </Window>