2012-05-02 61 views
0

enter image description here嗨,WPF自定義控件接收預覽

我有一個要求,顯示收據預覽作爲WPF頁面的一部分。收據樣本已附上。

根據配置,收據上的每一行文本都可以有不同的對齊方式(一些中心,一些右或左)和顏色。另外,每個收據類型的行數可能會有所不同。我想知道哪些控制措施可以有效地實施。我可以在後面的代碼中動態創建標籤,具體取決於行數,並且可以根據不同的前景色以不​​同的方式對齊每個標籤,但只是在找到有效的方法。收據的寬度不會改變,但長度可能會有所不同。所有行和所有收據類型的字體都相同。任何想法都非常感謝。

感謝

回答

1

這是通常最好避免動態添加像標籤或控制的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> 
+0

謝謝爲答覆。 – user296623

+0

ItemsControl方法對於上面的示例運行良好....只是在收到最後一行文本後添加了條形碼的新要求。我已經創建了一個條形碼自定義控件,但想知道如何將它添加到最後一行的下面。有任何想法嗎? – user296623