【发布时间】:2020-01-21 13:41:37
【问题描述】:
我正在使用 AvaloniaUI 制作标签列表 (TextBlocks)。根据基础数据状态,我希望其中一些是粗体的。有人可以向我指出如何根据绑定值在 DataTemplate 中将 TextBlock 设为粗体吗?
商品代码:
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}"/>
这让我在启动时出错:无法将“Avalonia.Data.Binding”类型的对象转换为“System.String”类型 我想它当时还没有处理绑定。
请问正确的路径是什么?
【问题讨论】:
-
你确定你已经实现了 INotifyPropertyChanged 并且正确触发了 DisplayWeight 属性的 PropertyChanged 事件吗?
-
这里没有任何变化,这是在创建中。但是,如果我需要做更多的工作才能让它发挥作用,我会研究一下。
标签: xaml avaloniaui