用于收据预览的WPF自定义控件

时间:2012-05-02 15:20:12

标签: c# wpf wpf-controls

enter image description here嗨,

我要求在WPF页面中显示收据预览。收据样本已附上。

收据上的每行文字可以根据配置有不同的对齐方式(某些中心,某些右侧或左侧)和颜色。此外,每个收据类型的行数可能不同。我想知道哪些控件用于有效实现这一点。我可以根据行数在代码后面动态创建标签,并以不同的前景颜色对齐每个标签,但只要找到有效的方法。收据的宽度不变,但长度可能不同。所有行和所有收据类型的字体都相同。任何想法都非常感激。

由于

1 个答案:

答案 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>