背後にあるコードからラベルやテキストブロックのようなコントロールを追加する動的避けるために、通常より良いです。このタイプのコードは読みにくく、テストするのがほとんど不可能です。その代わりに、ビューモデルクラスを使用する必要があります(MVVMパターンを参照)。あなたのビューモデルはReceiptItemのリストを返すプロパティを持ち、ビュー(XAMLファイル)でItemsControlを作成し、それをReceiptItemのリストにバインドすることができます。 ReceiptItemクラスのテンプレートを作成して、Label、TextBlockなどを使用して、必要なものが表示されるようにすることができます。
たとえば、C#で使用すると、2つのクラス必要があります:あなたのビューは(これは、あなたのデータコンテキストとしてMyReceiptViewModelのインスタンスを持っていることを前提とし)のように見えるかもしれません
public class MyReceiptViewModel
{
public List<ReceiptItem> ReceiptItems { get; set; }
}
public class ReceiptItem
{
public string Content { get; set; }
public bool IsHighlighted { get; set; }
}
は:
<ItemsControl ItemsSource="{Binding ReceiptItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Content}"
Foreground="{Binding IsHighlighted, Converter={StaticResource MyColorFromBooleanConverter}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
感謝返信のために。 – user296623
ItemsControlメソッドは上のサンプルではうまくいきました....バーコードを追加する新しい要件が追加されました。私はすでにバーコードのカスタムコントロールを作成しましたが、最後の行の下に追加する方法は不思議です。何か案は? – user296623