0

おそらく長い話ですが、私は本当にそれを解決する考えがありません.

ある企業は、食品、飲料、その他の 3 つのカテゴリの製品を製造しており、各カテゴリの下には複数の製品があります。たとえば、食品カテゴリには、チョコレート、ビスケットの製品があります。飲み物のカテゴリーには、牛乳、お茶、コーラの製品があります。他のカテゴリには、本、時計などの製品があります。

しかし、ある時期には、その会社は異なるカテゴリーから最大で 3 種類の製品を製造しています。たとえば、1 月に同社はチョコレート、紅茶、時計を製造しました。2月にはコーラと本を生産しました。

class ProductBase
{
    protected ProductBase(string name, double price)
    {
        Name = name;
        Price = price;
    }

    public int Type { get; protected set; }

    public string Name { get; private set; }

    public double Price { get; private set; }
}

class Food : ProductBase
{
    protected Food(string name, double price)
        : base(name,price)
    { Type = 1; }

    public bool IsFried { get; set; }
}

class Drink : ProductBase
{
    protected Drink(string name, double price)
        : base(name,price)
    { Type = 2; }

    public bool IsLowFat { get; set; }
}

class Other : ProductBase
{
    protected Other(string name, double price)
        : base(name,price)
    { Type = 3; }
}

次に、製品を表示する必要があります。便宜上、食べ物は常に最初の場所、飲み物は 2 番目、その他は 3 番目の場所に配置する必要があります。さらに、食品がなくても、その場所に飲み物やその他の製品を入れることはできません。

こちらは全3品。LF は、緑茶が低脂肪であることを示します。 3 製品

商品が 2 つしかない場合は、このように表示されます。 2 製品

各行の幅と高さは同じでなければなりません。IsLowFat/IsFried は 1 列目にあり、Name は 2 列目にあり、Price は 3 列目にあります。2 番目の列の幅は、コンテナーの使用可能な幅に合わせて変更できます。

上記のデモでは、このコードを使用していますが、非常に見苦しく、ウィンドウ サイズに応じて FontSize が光りません。ViewBox を試しましたが、処理できません。

<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="190" Width="402" FontSize="30">
    <UniformGrid Rows="3" >
        <DockPanel>
            <TextBlock Width="50"  Text="" Margin="0,0,5,0" DockPanel.Dock="Left" />
            <TextBlock DockPanel.Dock="Right" Text=""/>
            <TextBlock TextAlignment="Left" Text=""/>
        </DockPanel>
        <DockPanel>
            <TextBlock Width="50" Text="LF" Margin="0,0,5,0" DockPanel.Dock="Left" />
            <TextBlock DockPanel.Dock="Right" Text="$2"/>
            <TextBlock TextAlignment="Left" Text="Green Tea"/>
        </DockPanel>
        <DockPanel>
            <TextBlock  Width="50" Text="" Margin="0,0,5,0" DockPanel.Dock="Left" />
            <TextBlock DockPanel.Dock="Right" Text="$7"/>
            <TextBlock TextAlignment="Left" Text="Beautiful Clock"/>
        </DockPanel>
    </UniformGrid>
</Window>

それで、あなたの提案は何ですか?私の要件を満たす最善の方法は何ですか? どんな洞察も高く評価されます。

4

0 に答える 0