这可能是一个很长的故事,但我真的不知道要解决它。
一家公司生产三类产品,即食品,饮料和其他产品,每类产品都有几种产品。例如,食品类别有巧克力,饼干等产品;饮料类有牛奶,茶,焦炭等产品;另一类有书,时钟等产品。
但在一定程度上,该公司最多生产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表示绿茶是低脂肪。
如果只有两种产品,它应该像这样出现。
每一行应具有相同的宽度和高度。 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>
那你的建议是什么?什么是满足我要求的最佳方式?任何见解都表示赞赏。