Eri*_*ber 4 data-binding silverlight xaml triggers datatrigger
Silverlight不具备DataTriggers功能,因此在这种情况下......有条件地将项目的字体权重设置为布尔值的最佳方法是什么?
例如......在Silverlight中无法实现以下功能.
<TextBlock Text="{Binding Text}">
<TextBlock.Triggers>
<DataTrigger Binding="{Binding IsDefault}" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsDefault}" Value="False">
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</TextBlock.Triggers>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
谢谢!
Tho*_*que 10
您可以实现一个将bool转换为FontWeight的IValueConverter,并将其用作绑定的转换器:
<UserControl.Resources>
<local:BoolToFontWeightConverter x:Key="boolToFontWeight"/>
</UserControl.Resources>
...
<TextBlock Text="{Binding Text}" FontWeight="{Binding IsDefault, Converter={StaticResource boolToFontWeight}}">
Run Code Online (Sandbox Code Playgroud)
我实际上会使用布尔到样式转换器.
public class BoolToStyleConverter : IValueConverter
{
public Style TrueStyle { get; set; }
public Style FalseStyle { get; set; }
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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在资源部分中,您将设置2个公共样式属性.
<localHelpers:BoolToStyleConverter x:Key="boolToHistoryTextBlockStyleConverter">
<localHelpers:BoolToStyleConverter.TrueStyle>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"></Setter>
</Style>
</localHelpers:BoolToStyleConverter.TrueStyle>
<localHelpers:BoolToStyleConverter.FalseStyle>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Black"></Setter>
</Style>
</localHelpers:BoolToStyleConverter.FalseStyle>
</localHelpers:BoolToStyleConverter>
Run Code Online (Sandbox Code Playgroud)
此示例设置Foreground颜色,但您可以设置任何样式.要绑定它,你可以设置转换器,在这种情况下,如果IsCommentChange为True,文本将为红色,如果为false,则为黑色.
<TextBlock Name="tbComment" Text="{Binding Path=Comment,Mode=OneTime}"
TextWrapping="Wrap"
Style="{Binding Path=IsCommentChanged,
Converter={StaticResource boolToHistoryTextBlockStyleConverter}}" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3800 次 |
最近记录: |