内容简介:我所遇到的问题是,每个链接都被弄脏了.一个红色,一个蓝色,一个绿色等有没有一种方法来样式这些项目,而不牺牲使用数据模板的项目控件的动态?http://stackoverflow.com/questions/3034261/conditional-styling-in-silverlight
我所遇到的问题是,每个链接都被弄脏了.一个红色,一个蓝色,一个绿色等有没有一种方法来样式这些项目,而不牺牲使用数据模板的项目控件的动态?
我已经使用一个简单的转换器在视图模型的属性,例如让我们说你有一个布尔属性,你想要控制一个风格,你可以做到这一点.
public class BoolToStyleConverter : IValueConverter { public Style TrueStyle{ get; set; } public Style FalseStyle{ get; set; } #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return ((bool)value) ? TrueStyle : FalseStyle; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion }
那么作为一种资源,你可以定义你的两种风格
<common:BoolToStyleConverter x:Key="BoldTextConverter"> <common:BoolToStyleConverter.TrueStyle> <Style TargetType="TextBlock"> <Setter Property="FontWeight" Value="Bold"></Setter> </Style> </common:BoolToStyleConverter.TrueStyle> <common:BoolToStyleConverter.FalseStyle> <Style TargetType="TextBlock"> <Setter Property="FontWeight" Value="Normal"></Setter> </Style> </common:BoolToStyleConverter.FalseStyle> </common:BoolToStyleConverter>
那么你可以将它应用到你的对象这样…
<TextBlock Text="{Binding Description}" Margin="20,4,4,4" Style="{Binding IsConfirmed, Converter={StaticResource BoldTextConverter}}"></TextBlock>
其中IsConfirmed是viewmodel上的布尔属性,如果IsConfirmed属性更改,这也将保持同步的样式.
如果要使用比布尔更复杂的条件,您可以随时在转换器中创建一个对象到“样式”的字典,然后让转换器进行查找,但是我发现通常布尔工作在大多数情况下.
http://stackoverflow.com/questions/3034261/conditional-styling-in-silverlight
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 1.6 常用CSS样式2:其它样式
- 1.5 常用CSS样式1:文本样式
- SQL where条件和jion on条件的详解及区别
- CSS 样式防御
- 代码样式的另类风格!开眼
- [译] 4 分钟学会网页样式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML 编码/解码
HTML 编码/解码
HEX HSV 转换工具
HEX HSV 互换工具