天津市城乡建设部网站首页,discuz做网站赚钱经历,广州网站设计费用,wordpress淘宝客商城文章目录 添加控件具体实现代码说明 txt阅读器系列#xff1a;
需求分析和文件读写目录提取类#x1f48e;列表控件与目录字体控件绑定书籍管理系统#x1f48e;用树形图管理书籍
添加控件
除了字体、字体大小之外#xff0c;文字和背景颜色也会影响阅读观感#xff0c… 文章目录 添加控件具体实现代码说明 txt阅读器系列
需求分析和文件读写目录提取类列表控件与目录字体控件绑定书籍管理系统用树形图管理书籍
添加控件
除了字体、字体大小之外文字和背景颜色也会影响阅读观感其设置方法与选择字体如出一辙都通过combobox控件来选择。故而在阅读设置里面添加
StackPanel x:Namecolor OrientationHorizontalTextBlock Text前景/ComboBox x:NamecbForeColor Width105/TextBlock Text背景/ComboBox x:NamecbBgColor Width105/
/StackPanel具体实现
考虑到C#中封装的大多数颜色其实我们都不太认识为了更加直观故而在ComboBox中的每个选项都赋上对应的颜色其对应的C#代码为
using System.Reflection;public void init()
{foreach (var fm in Fonts.SystemFontFamilies)cbFont.Items.Add(fm.Source);cbFont.SelectedIndex 0;var cs typeof(Brushes).GetProperties(BindingFlags.Static | BindingFlags.Public).Select(x x.Name ).ToArray();int i;int iWhite Array.IndexOf(cs, White);int iBlack Array.IndexOf(cs, Black);cbForeColor.ItemsSource cs.Select(x new ComboBoxItem { Content x });cbForeColor.SelectedIndex iBlack;cbBgColor.ItemsSource cs.Select(x new ComboBoxItem { Content x });cbBgColor.SelectedIndex iWhite;var bc new BrushConverter();foreach (ComboBoxItem item in cbForeColor.Items)item.Background (SolidColorBrush)bc.ConvertFromString(item.Content.ToString());foreach (ComboBoxItem item in cbBgColor.Items)item.Background (SolidColorBrush)bc.ConvertFromString(item.Content.ToString());
}代码说明
其中typeof(Brushes).GetProperties是C#的反射功能可以返回某个类的所有属性。其中BindingFlags.Static | BindingFlags.Public表示只返回静态公共属性。
然后调用Select提取出这些属性的Name最后将其转为数组赋值给cs。
由于想为ComboBox中的每一项都填上不同的颜色而字符串本身并没有颜色这个属性所以不能直接将ItemsSource设置为cs而要将所有字符串封装在ComboBoxItem中。
然后遍历这些ComboBoxItem将其背景色设置为其名字对应的颜色。
最后修改txt控件的前景色和背景色在xaml代码中加入
Foreground{Binding SelectedItem.Content, ElementNamecbForeColor}
Background{Binding SelectedItem.Content, ElementNamecbBgColor}效果如下