我有一個要求,顯示收據預覽作爲WPF頁面的一部分。收據樣本已附上。
根據配置,收據上的每一行文本都可以有不同的對齊方式(一些中心,一些右或左)和顏色。另外,每個收據類型的行數可能會有所不同。我想知道哪些控制措施可以有效地實施。我可以在後面的代碼中動態創建標籤,具體取決於行數,並且可以根據不同的前景色以不同的方式對齊每個標籤,但只是在找到有效的方法。收據的寬度不會改變,但長度可能會有所不同。所有行和所有收據類型的字體都相同。任何想法都非常感謝。
感謝
我有一個要求,顯示收據預覽作爲WPF頁面的一部分。收據樣本已附上。
根據配置,收據上的每一行文本都可以有不同的對齊方式(一些中心,一些右或左)和顏色。另外,每個收據類型的行數可能會有所不同。我想知道哪些控制措施可以有效地實施。我可以在後面的代碼中動態創建標籤,具體取決於行數,並且可以根據不同的前景色以不同的方式對齊每個標籤,但只是在找到有效的方法。收據的寬度不會改變,但長度可能會有所不同。所有行和所有收據類型的字體都相同。任何想法都非常感謝。
感謝
這是通常最好避免動態添加像標籤或控制的TextBlocks從後面的代碼。這種類型的代碼很難閱讀,幾乎不可能測試。相反,您應該使用視圖模型類(查找MVVM模式)。您的視圖模型可以有一個屬性返回ReceiptItem列表,然後在您的視圖(XAML文件)中創建一個ItemsControl並將其綁定到您的ReceiptItems列表。現在您可以爲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>
謝謝爲答覆。 – user296623
ItemsControl方法對於上面的示例運行良好....只是在收到最後一行文本後添加了條形碼的新要求。我已經創建了一個條形碼自定義控件,但想知道如何將它添加到最後一行的下面。有任何想法嗎? – user296623