最多显示3个项目,每个项目都有自己的位置

时间:2012-07-26 03:07:07

标签: wpf

这可能是一个很长的故事,但我真的不知道要解决它。

一家公司生产三类产品,即食品,饮料和其他产品,每类产品都有几种产品。例如,食品类别有巧克力,饼干等产品;饮料类有牛奶,茶,焦炭等产品;另一类有书,时钟等产品。

在一定程度上,该公司最多生产3种不同类别的产品。例如,1月份该公司生产巧克力,茶和时钟;二月它制作了可乐和书。

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; }
}

现在我需要展示产品。为方便起见,食物应始终位于第一位,饮用第二位,其他第三位。另外,即使没有食品,也不能拿着饮料或其他产品。

以下是这三种产品。 LF表示绿茶是低脂肪。 3 products

如果只有两种产品,它应该像这样出现。 2 products

每一行应具有相同的宽度和高度。 IsLowFat / IsFried位于第1列,名称位于第2列,价格位于第3列。 第二列的宽度可以更改,因此它适合容器的可用宽度。

在上面的演示中,我使用了这段代码,但它非常难看,而且 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>

那你的建议是什么?什么是满足我要求的最佳方式?任何见解都表示赞赏。

0 个答案:

没有答案