0

我正在使用 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”类型,我认为它此时尚未处理绑定。

请问什么是正确的路径?

4

1 回答 1

0

好的,下面的 XAML 行:

 <TextBlock Margin="4" TextWrapping="Wrap" FontWeight="{Binding DisplayWeight}" Text="{Binding Description}"/>

当以下行应用于我要显示的对象时起作用:

    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;
        }
    }
于 2020-01-22T16:08:12.633 回答