WPF IValueConverter and IMultiValueConverter
1. 实现DataGrid column的显示和隐藏功能;
(1). 定义ContextMenu ,该ContextMenu仅可使用于DataGrid的DataGridColumnHeader;
<ContextMenu x:Key="StudyDataGridHeaderContextMenu" ItemsSource="{Binding Columns,
RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type DataGrid}, Mode=FindAncestor}}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Header,UpdateSourceTrigger=PropertyChanged}"
IsChecked="{Binding Path=Visibility,Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,Converter={StaticResource DataGridColumnVisibilityConvert}}"/>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
(2). 自定义显示隐藏的制转换器;
public class DataGridColumnVisibility : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool flag = false;
Visibility vis = (Visibility)value;
switch (vis)
{
case Visibility.Hidden:
flag = false;
break;
case Visibility.Visible:
flag = true;
break;
default:
break;
}
return flag;
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool flag = System.Convert.ToBoolean(value);
if (flag)
{
return Visibility.Visible;
}
else
{
return Visibility.Hidden;
}
}
}
2. 在实现DataGridColumn Filter 功能时,可以采用在DataGrid的外部(列头上)绑定对应的TextBox控件,并设置其样式与DataGridColumn基本一致,绑定宽度的方式来实现;
(1). 绑定TextBox;
<TextBox x:Name="txt2" Style="{StaticResource textBoxStyle}" Grid.Column="1" VerticalAlignment="Top"
Foreground="Indigo" TabIndex="0" BorderThickness="1" Text="{Binding Data_idFilter_text, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Left" Visibility="{Binding Visibility,ElementName=studyID}">
<TextBox.Width>
<MultiBinding Converter="{StaticResource VisibilityToWidthConverter}">
<Binding Path="Visibility" ElementName="studyID"></Binding>
<Binding Path="ActualWidth" ElementName="studyID"></Binding>
</MultiBinding>
</TextBox.Width>
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<i:InvokeCommandAction Command="{Binding LoadDataCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
(2). 自定义多值转换器;
class VisibilityToWidthConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
Visibility vis = (Visibility)values[0];
double result = double.MinValue;
switch(vis)
{
case Visibility.Hidden:
result = 0;
break;
case Visibility.Visible:
result = (double)values[1];
break;
default:
result = 0;
break;
}
return result;
} public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
WPF IValueConverter and IMultiValueConverter的更多相关文章
- 【转】WPF MultiBinding 和 IMultiValueConverter
WPF MultiBinding 和 IMultiValueConverter 时间 2015-02-02 19:43:00 博客园精华区 原文 http://www.cnblogs.com/wo ...
- WPF进阶之接口(1):IValueConverter,IMultiValueConverter
看一个例子,FontFamily="Trebuchet MS, GlobalSansSerif.CompositeFont" .这样一条简单的语句,熟悉WPF的人在xaml中可能经 ...
- WPF MultiBinding 和 IMultiValueConverter
MultiBinding,描述附加到单个绑定目标属性的Binding对象的集合.可以指定多个数值绑定. IMultiValueConverter通过转换器使用MultiBingding对象,该对象讲根 ...
- 准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题
题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术 ...
- 【转】【WPF】WPF绑定用法
一.简介 为了后面行文顺利,在进入正文之前,我们首先对本文所涉及到的绑定知识进行简单地介绍.该节包含绑定的基本组成以及构建方式. WPF中的绑定完成了绑定源和绑定目标的联动.一个绑定常常由四部分组成: ...
- wpf一些例子
相关知识点:WPF - Adorner WPF Diagram Designer http://www.codeproject.com/Articles/484616/MVVM-Diagram-Des ...
- WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter
注: 需要继承IMultiValueConverter接口,接口使用和IValueConverter逻辑相同. 一.MultiBinding+Converter 多值绑定及多值转换实例 当纵向流量大于 ...
- C# WPF MVVM 实战 – 4 - 善用 IValueConverter
IValueConverter,做 WPF 的都应该接触过,把值换成 Visibility .Margin 等等是最常见的例子,也有很多很好的博文解释过用法.本文只是解释一下,MVVM 中一些情景. ...
- WPF 格式化输出- IValueConverter接口的使用
以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如 使用 <%# GetBalance(custID) %> 这 ...
- wpf值转换器IValueConverter例子
转载:http://blog.163.com/wangzhenguo2005@126/blog/static/37140526201085113430862/ 值转换器可以把一种类型转换成另一种类型. ...
随机推荐
- 《前端运维》一、Linux基础--11服务
首先服务的概念,对于linux服务器来说,其中大多数的软件都算是服务,比如nginx.mysql.Jenkins等等.下面我们就来学习一下linux中有关服务的一些内容. 一.服务简介和分类 1.运行 ...
- 录音虚拟驱动杂音bug修复
永远选择相信同步原语 起因 qemu有一个可以让虚拟机(guest)使用宿主机(host)的音频播放的参数,-device audio.这个参数在x86上效果不错,但是在arm上效果不行,杂音很多,所 ...
- cas3.5配置LDAP域控
一. 安装cas3.5 点击下载 CAS 3.5.2 :CAS 解压缩下载的 cas-server-3.5.2-release.zip,在 %CAS%\modules文件夹中找到cas-server- ...
- IOS实现水波纹
IOS实现水波纹 需要实现一个水波纹效果 其实就是画两个正弦函数或者余弦函数的layer在view上面,根据屏幕刷新率来重绘,更新其左右偏移量来让其看起来是在左右移动 具体实现 定义两个layer,用 ...
- VB 不应该是这副模样出现
和同时代的其它语言比,VB 设计的太烂了,应景之作,充满了各种小聪明. 当时有 JS, 有 python,VB 的设计者不懂参考借鉴,给出的是一个连继承都没有的设计. VB 的语言设计问题极多, 首选 ...
- apache kylin的一些注意事项(解决kylin报错Storage schema reading not supported)
1.目前我所使用的kylin版本为2.6.2,有时在完成一次构建后会出现fail to locate kylin.properties的异常,如图所示 经排查,定位到kylin源码中的 org.apa ...
- 解密Prompt45. 再探LLM Scalable Oversight -辩论、博弈哪家强
之前我们已经介绍过几个针对Scalable Oversight的解法,也就是当模型能力在部分领域超越人类标注者后,我们该如何继续为模型提供监督信号,包括 持续提升Verifier的能力,辅助人类提供监 ...
- manim边做边学--动画轨迹
本篇介绍Manim中两个和动画轨迹相关的类,AnimatedBoundary和TracedPath. AnimatedBoundary聚焦于图形边界的动态呈现,能精准控制边界绘制的每一帧,助力我们清晰 ...
- 分布式全局唯一ID解决方案详解
--------------------- ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Inn ...
- MyBatis的深入原理-架构设计以及实例分析
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例, ...