我是WPF的新手,我想在WPF-c#.net中开发剧院座位的应用程序。 我做了一些研究,但我迷失了,因为我不知道每个座位的数据(销售与否,价格,哪一行)最终应该如何绑定到SQL Express表中的字段。 我应该使用ObservableCollection来填充数据中的内容吗? 另外,我应该使用按钮网格吗?或矩形?如果我想让左前和右前的按钮倾斜一点而不是水平,我该怎么办? 如果我想为座位设置三个区域,我应该使用一个包装纸吗?左侧区域,改变空间,中间区域,改变区域和右侧区域? 如果有人能给我一些提示让我开始,我会非常高兴。 提前谢谢......
答案 0 :(得分:0)
你一次提出了很多问题,如果没有为你编写程序,任何人都无法回答这些问题,但我会提供我将采取的高级方法。你将不得不花一些时间来挖掘细节。有关StackOverflow的大量信息,以及获取有关这些细节的帮助。
反正 -
数据库,3个表格
SeatStatus
表
PricePoint
表
Seat
表
应用程序模型
我会使用 Entity Framework 4 并从您的TheaterSeating数据库生成您的模型。这将为您创建Seat
个对象,自动包含对SeatStatus
和PricePoint
的引用。非常光滑。
修改1
创建模型后,您将拥有一个代表您的数据的.edmx文件,并且可以轻松地读/写您的数据库。假设此文件名为TheaterSeatingModel.edmx
,则自动生成的类将为您提供调用以下内容的方法:
TheaterSeatingEntities entities = new TheaterSeatingEntities();
您现在可以访问整个数据库,包括:
entities.Seats
entities.PricePoints
等
您可以像您自然期望的那样使用这些类,例如:
Seat seat = new Seat();
seat.Row = 10;
seat.Column = 5;
entities.Seats.Add(seat);
entities.SaveChanges();
在类中填充ObservableCollection
这些席位,并将View的(XAML控件)DataContext设置为此类。
public ObservableCollection<Seat> SeatCollection {get;set;}
public ViewModelConstructor()
{
TheaterSeatingEntities entities = new TheaterSeatingEntities();
SeatCollection = new ObservableCollection<Seat>(entities.Seats);
}
这将使用所有Seat对象填充您的集合。
一个简单的WPF绑定到这个集合将是:
<ListBox ItemsSource={Binding SeatCollection} />
<强> UI 强>
如果是我,我会使用其ItemsControl
设置为ItemsSource
席位的WPF ObservableCollection
。将此ItemsControl
放在Canvas
内。 ItemsControl's
ItemsControl.ItemTemplate
控制每个Seat
在您的视图中的样子。您可以将ItemTemplates
Canvas.Left
和Canvas.Top
绑定到Seat.Row
和Seat.Column
,将座位放在屏幕上的适当位置。您可以将模板设为按钮,矩形,座位图像,任何内容。您可以设置Styles
和Triggers
,以便根据PricePoint
,SeatStatus
等不同地显示座位。
我认为WPF对你正在开始的项目非常有用。
祝你好运!