如何根据绑定值使Avalonia XAML TextBlock加粗?
我使用AvaloniaUI制作标签列表(文本块)。根据底层数据状态,我希望其中一些是粗体的。有人能告诉我如何根据绑定值在DataTemplate中加粗或不加粗文本块吗 项目代码:如何根据绑定值使Avalonia XAML TextBlock加粗?,xaml,avaloniaui,Xaml,Avaloniaui,我使用AvaloniaUI制作标签列表(文本块)。根据底层数据状态,我希望其中一些是粗体的。有人能告诉我如何根据绑定值在DataTemplate中加粗或不加粗文本块吗 项目代码: public FontWeight DisplayWeight() => !IsBold ? FontWeight.Black : FontWeight.Bold; 模板代码: <DataTemplate> <TextBlock Margin="4" TextWra
public FontWeight DisplayWeight() => !IsBold ? FontWeight.Black : FontWeight.Bold;
模板代码:
<DataTemplate>
<TextBlock Margin="4" TextWrapping="Wrap" FontWeight="{Binding DisplayWeight}" Text="{Binding Description}"/>
</DataTemplate>
输入硬编码的重量是有效的
所以我尝试了一种风格:
public string DisplayClass() => IsBold ? "h1" : "p";
<TextBlock Margin="4" TextWrapping="Wrap" Classes="{Binding DisplayClass}" Text="{Binding Description}"/>
publicstringdisplayclass()=>IsBold?“h1”:“p”;
这使我在启动时出错:无法将“Avalonia.Data.Binding”类型的对象强制转换为“System.String”类型
我想当时它还没有处理绑定
请问哪条路正确 好的,下面的XAML行:
<TextBlock Margin="4" TextWrapping="Wrap" FontWeight="{Binding DisplayWeight}" Text="{Binding Description}"/>
是否确实已实现INotifyPropertyChanged并正确触发DisplayWeight属性的PropertyChanged事件?此处没有任何更改,目前正在创建中。然而,如果我需要做更多的工作,我会调查的。
private FontWeight _displayWeight = FontWeight.Normal;
private bool _isBold;
public FontWeight DisplayWeight
{
get { return _displayWeight; }
set { this.RaiseAndSetIfChanged(ref this._displayWeight, value); }
}
public bool IsBold
{
get => _isBold;
set
{
_isBold = value;
DisplayWeight = _isBold ? FontWeight.Bold : FontWeight.Normal;
}
}