UI

<Grid x:Class="WzlyTool.ReplyContentUI"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="497" Width="771" xmlns:my="clr-namespace:WzlyTool"> <Grid.Resources>
<Style TargetType="ListBox" x:Key="listboxStyle">
<Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter> </Style>
<Style TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray"></SolidColorBrush>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="LightGray"></SolidColorBrush>
</Style.Resources>
</Style>
</Grid.Resources> <Grid> <RichTextBox Foreground="#ffeeeeee" Name="txtLog" Margin="46,254,7,35" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<!--设置行间距-->
<RichTextBox.Document>
<FlowDocument Focusable="True" LineHeight="2">
</FlowDocument>
</RichTextBox.Document>
</RichTextBox> <ListBox Name="listBox" SelectionMode="Single" Style="{StaticResource listboxStyle}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal"> <Button Tag="{Binding id}" Name="btnEditItem" Click="btnEditItem_Click" Margin="1,1,12,1">Edit</Button>
<TextBlock TextWrapping="Wrap"/>
<CheckBox Width="300" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" Foreground="{Binding color}"
VerticalAlignment="Center" Content="{Binding msg}" IsChecked="{Binding isChecked}"> <CheckBox.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</CheckBox.Resources>
</CheckBox> </StackPanel> </DataTemplate>
</ListBox.ItemTemplate>
</ListBox> <Button Name="btnSaveConfig"
Content="Save config content" Margin="474,28,0,0" Height="39"
VerticalAlignment="Top"
BorderBrush="#FFE2E2E2"
Background="Gray"
BorderThickness="2"
Foreground="White" Click="btnSaveConfig_Click" HorizontalAlignment="Left" Width="154"> </Button> <Button Name="btnAdd"
Content="+ add content item" Margin="196,28,0,0" Height="39"
VerticalAlignment="Top"
BorderBrush="#FFE2E2E2"
Background="Gray"
BorderThickness="2"
Foreground="White" Click="btnAdd_Click" HorizontalAlignment="Left" Width="154"> </Button> </Grid> </Grid>

  

the ui class behinde 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.Data;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Net.Security;
using System.Runtime.Serialization.Formatters.Binary; namespace WzlyTool
{
/// <summary>
/// Interaction logic for ReplyWind.xaml
/// </summary>
public partial class ReplyContentUI : Grid
{
public ReplyContentUI()
{
InitializeComponent();
Loaded += new RoutedEventHandler(ReplyContentUI_Loaded);
listContent = new List<ReplyContentItem>();
listBox.DataContext = listContent;
listBox.ItemsSource = listContent; }
private string file = "reMsg.d";
public List<ReplyContentItem> listContent;
private SolidColorBrush checkedColor = new SolidColorBrush(Colors.Green);
private SolidColorBrush unCheckedColor = new SolidColorBrush(Colors.Gray);
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
ReplyContentItem c = new ReplyContentItem() { color = "Green", isChecked = true, msg = "hello" + DateTime.Now };
listBox.ItemsSource = null;
listContent.Add(c);
listBox.ItemsSource = listContent; } void ReplyContentUI_Loaded(object sender, RoutedEventArgs e)
{
listContent.Add(new ReplyContentItem() { color = "Red", id = Guid.NewGuid().ToString(), isChecked = true, msg = "yuiyui8888888888888yui" });
listContent.Add(new ReplyContentItem() { color = "Gray", id = Guid.NewGuid().ToString(), isChecked = true, msg = "yuiyuiyui" });
listBox.ItemsSource = null;
testLoadConfigContent();
listBox.ItemsSource = listContent; } private void btnSaveConfig_Click(object sender, RoutedEventArgs e)
{
testSaveConfigContent();
} private void CheckBox_Checked(object sender, RoutedEventArgs e)
{ if (((CheckBox)sender).IsChecked == true)
{
((CheckBox)sender).Foreground = checkedColor;
}
else
{
((CheckBox)sender).Foreground = unCheckedColor;
} } private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
if (((CheckBox)sender).IsChecked == true)
{
((CheckBox)sender).Foreground = checkedColor;
}
else
{
((CheckBox)sender).Foreground = unCheckedColor;
} } void displayLog(string txt)
{
txtLog.AppendText("" + DateTime.Now + ":" + txt + "\r\n");
txtLog.ScrollToEnd();
} private void btnEditItem_Click(object sender, RoutedEventArgs e)
{
string id = "" + ((Button)sender).Tag;
ReplyContentItem c = listContent.FirstOrDefault(n => n.id == id);
if (c != null)
{ c.msg = "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg";
listBox.ItemsSource = null;
listBox.ItemsSource = listContent;
// MessageBox.Show(c.msg ); } } void testLoadConfigContent()
{ try
{ if (!File.Exists(file)) { return; }
List<ReplyContentItem> obj;
// 打开文件,并进行反序列化得到对象
Stream stream = File.Open(file, FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
obj = (List<ReplyContentItem>)formatter.Deserialize(stream);
stream.Close();
listBox.ItemsSource = null;
listContent.Clear();
foreach (ReplyContentItem m in obj)
{
if ("" + m.color == "") { m.color = "Green"; }
if (m.isChecked)
{
m.color = "Green";
}
else
{
m.color = "Gray";
}
listContent.Add(m);
} }
catch (Exception ex)
{
MessageBox.Show(ex.Message);
} }
public void testSaveConfigContent()
{ int cnt = listBox.Items.Count;//listView 是UI上的列表控件
List<ReplyContentItem> obj = new List<ReplyContentItem>();
for (int i = 0; i < cnt; i++)
{ // obj.Add (listBox.Items[i] as ReplyContentItem) ;/// new Msg() { isChecked = listView.Items[i] as , word = "test" + i };
obj.Add(listBox.Items[i] as ReplyContentItem);/// new Msg() { isChecked = listView.Items[i] as , word = "test" + i }; }
// 创建一个文件,并将对象序列化后存储在其中
Stream stream = File.Open(file, FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
//BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
stream.Close();
// 将对象置空
obj = null;
} } [Serializable]
public class ReplyContentItem
{
public ReplyContentItem()
{
color = "Gray";
id = Guid.NewGuid().ToString();
}
public string id { get; set; }
public string msg { get; set; }
public bool isChecked { get; set; } public string color
{
get;
set;
} } }

  

another article:WPF C# 序列化保存设置    https://www.cnblogs.com/wgscd/articles/8630128.html

WPF save listbox config的更多相关文章

  1. WPF ItemsControl ListBox ListView比较

    在进行列表信息展示时,WPF中提供多种列表可供选择.这篇博客将对WPF ItemsControl, ListBox, ListView进行比较. 相同点: 1. 这三个控件都是列表型控件,可以进行列表 ...

  2. WPF中ListBox的项ListBoxItem被选中的时候Background变化

    使用WPF 中ListBox,点击ListBoxItem的时候,自定义它的背景色,曾经在网上找了一些方法, 不是很理想,后来在StackOverflow上找到了,贴出代码和效果图: 效果图:

  3. Android Kernel save defalut config

    /********************************************************************************* * Android Kernel ...

  4. WPF中ListBox滚动时的缓动效果

    原文:WPF中ListBox滚动时的缓动效果 上周工作中遇到的问题: 常规的ListBox在滚动时总是一格格的移动,感觉上很生硬. 所以想要实现类似Flash中的那种缓动的效果,使ListBox滚动时 ...

  5. [WPF系列]-ListBox

    引言 本文就WPF中的ListBox常用项给以实例代码演示,包括隐蔽属性的设置,Style设置,以及ControlTemplate的自定义.   Listbox平滑滚动 <ListBox Ite ...

  6. WPF中ListBox控件在选择模式(SelectionMode)为Single时仍然出现多个Item被选中的问题

    最近在学习WPF过程中使用到了ListBox控件,在使用时遇到下面的奇怪问题: 代码如下: listBox.Items.Add("绘图"); listBox.Items.Add(& ...

  7. WPF的ListBox中的RadioButton不能单选问题

    WPF不知道是微软故意弄的还是真的匆忙的推出的产品,在实际开发过程中有很多小问题解决很麻烦. 今天主要说一下ListBox中使用RadioButton的时候里面的RadioButton不能单选!居然成 ...

  8. WPF中ListBox /ListView如何改变选中条背景颜色

    适用ListBox /ListView WPF中LISTVIEW如何改变选中条背景颜色 https://www.cnblogs.com/sjqq/p/7828119.html

  9. 【WPF】ListBox嵌套与事件冒泡

    问题:两个ListBox嵌套后,当鼠标位于内部ListBox上,鼠标滚轮事件会被内部ListBox接收,导致外层ListBox不能用鼠标滚轮滑动!现在的需求是该事件要能给外部ListBox处理,即嵌套 ...

随机推荐

  1. python学习笔记之——操作mysql数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  2. 完美的nginx图片防盗链设置详解

    一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!依然可以下载?这样就不是彻底的防盗链了! [r ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析

    机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018 ...

  4. Leetcode题解之Valid Palindrome II

    1.题目描述 2.问题分析 使用两个下标,检测下标对应的字符是否相等,若不相等,则考察子串. 3.代码 bool validPalindrome(string s) { , j = s.size()- ...

  5. 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机

    Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程介绍了如何在虚拟网络中创建多个虚拟机 (VM),以及如何在虚拟机之间配置网络连接. 你将学习如何执行以下操作: 创建虚拟网络 创 ...

  6. 安装并使用pt-ioprofile

    pt-ioprofile,是一个percona的性能分析工具,可以查看进程输出.输入,打印一些表文件及活动IO.pt-ioprofile是一个只读工具,所以对数据没风险.由于网上对pt-ioprofi ...

  7. Linux 中查看 DNS 与 配置

    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串. 查看dns 可 ...

  8. 利用windows的计划任务和eKing.CmdReadFileAndSendEmailOper(控制台小程序)实现远程登录服务器的邮件告警提醒

    一.场景摘要: 1.windows计划任务中,有一个用户登录时候触发的事件 2.cmd命令:netstat -ano   | find "3389" 可以看到当前远程登录的IP 3 ...

  9. vsftp配置

    网上很多,但我还是想再整理一份属于自己的 1.vsftp简介 vsftp提供三种登陆方式:.匿名登录 .本地用户登录 .虚拟用户登录 vsftpd的特点:.较高的安全性需求 .带宽的限制 .创建支持虚 ...

  10. Hadoop HBase概念学习系列之HLog(二)

    首先,明确,HRegion服务器包含两大部分:HLog和HRegion. HLog用来存储数据日志,采用的是先写日志的方式. 当用户需要更新数据的时候,数据会被分配到对应的HRegion服务器上提交修 ...