如何通过TextBlock
到FontStyle
将Binding
定义为bool
为粗体?
<TextBlock
Text="{Binding Name}"
FontStyle="???">
我真的很想把它绑定到
public bool NewEpisodesAvailable
{
get { return _newEpisodesAvailable; }
set
{
_newEpisodesAvailable = value;
OnPropertyChanged();
}
}
有没有办法实现这一点,或者我的Model属性应该为我做翻译,而不是直接提出bool
FontStyle
?
答案 0 :(得分:25)
您可以通过DataTrigger
这样实现:
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding NewEpisodesAvailable}"
Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
或者您可以使用IValueConverter将bool转换为FontWeight。
public class BoolToFontWeightConverter : DependencyObject, IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return ((bool)value) ? FontWeights.Bold : FontWeights.Normal;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
XAML:
<TextBlock FontWeight="{Binding IsEnable,
Converter={StaticResource BoolToFontWeightConverter}}"/>
确保在XAML中将转换器声明为资源。
答案 1 :(得分:2)
只需实现一个将bool转换为所需字体样式的转换器。然后绑定到NewEpisodesAvailable并让转换器返回正确的值。
答案 2 :(得分:1)
我会创建一个在其getter中返回字体样式的属性。如果上面的属性为false,则可以使其返回null。然后将字体样式xaml绑定到该属性
答案 3 :(得分:1)
在这种情况下使用触发器。
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding NewEpisodesAvailable}" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
关于CodeProject的文章: http://www.codeproject.com/Tips/522041/Triggers-in-WPF