嗨,
我要求在WPF页面中显示收据预览。收据样本已附上。
收据上的每行文字可以根据配置有不同的对齐方式(某些中心,某些右侧或左侧)和颜色。此外,每个收据类型的行数可能不同。我想知道哪些控件用于有效实现这一点。我可以根据行数在代码后面动态创建标签,并以不同的前景颜色对齐每个标签,但只要找到有效的方法。收据的宽度不变,但长度可能不同。所有行和所有收据类型的字体都相同。任何想法都非常感激。
由于
答案 0 :(得分: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>