0

在此处输入图像描述你好,

我需要将收据预览显示为 WPF 页面的一部分。附上收据样本。

收据上的每一行文本都可以有不同的对齐方式(一些居中,一些居右或居左)和颜色,具体取决于配置。此外,每种收据类型的行数可能会有所不同。我想知道要使用哪些控件来有效地实现这一点。我可以根据行数在后面的代码中动态创建标签,并使用不同的前景色以不​​同的方式对齐每个标签,但如果有的话,只是寻找一种有效的方法。收据的宽度不变,但长度可能。所有行和所有收据类型的字体都相同。任何想法都非常感谢。

谢谢

4

1 回答 1

1

通常最好避免从后面的代码中动态添加标签或文本块等控件。这种类型的代码难以阅读,几乎不可能测试。相反,您应该使用视图模型类(查找 MVVM 模式)。您的视图模型可能具有返回 ReceiptItem 列表的属性,然后在您的视图(XAML 文件)中创建 ItemsControl 并将其绑定到您的 ReceiptItem 列表。现在您可以为 ReceiptItem 类创建一个模板,以便它们使用 Label、TextBlock 或您认为合适的任何内容显示所需的内容。

例如,在 C# 中,您需要两个类:

public class MyReceiptViewModel
{
    public List<ReceiptItem> ReceiptItems { get; set; }
}

public class ReceiptItem
{
    public string Content { get; set; }
    public bool IsHighlighted { get; set; }
}

您的视图可能如下所示(假设您有一个 MyReceiptViewModel 实例作为数据上下文):

<ItemsControl ItemsSource="{Binding ReceiptItems}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock 
                Text="{Binding Content}" 
                Foreground="{Binding IsHighlighted, Converter={StaticResource MyColorFromBooleanConverter}}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2012-05-02T16:24:59.807 回答