在WPF中的棋盘
多年来我用Winforms开发,现在我想切换到WPF并制作一个棋盘。 不幸的是,我不知道从哪里开始。 使用WPF让我非常不确定,我再次感觉像一个noob。 有人可以概述基本设计吗? 我想我会从一个8x8网格开始,并使用矩形的正方形,图片作品。 接着? 我错过了什么吗?
编辑:这只是关于用户界面; 幕后发生的事情没有问题。
标准网格的替代方法是使用UniformGrid
(msdn链接)。
它可能更适合这个(在我看来),因为它总是会给你相同大小的单元格。
用过ala:
<UniformgGrid Columns="8" Rows="8">
<Control1/>
<Control2/>
<Control3/>
</UniformGrid>
任何这些答案都会给你你想要的结果。
国际象棋似乎非常适合WPF的MVVM代码模式。
这个模型将成为国际象棋游戏的逻辑,听起来就像你掌握的那样。 该视图将WPF外观,ViewModel将视图可以绑定到的游戏表示。
对于视图,使用UniformGrid的ItemsControl将用于游戏的2D表示。
这是一个开始(未选中)
<ItemsControl ItemsSource="{Binding TheGame}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="8" Rows="8" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Background="{Binding SquareColor}">
<Path Data="{Binding PieceShape}" Fill="{Binding PieceColor}" />
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
对于上面的工作,你的ViewModel需要有一个ObservableCollection<ChessGridItem>
而ChessGridItem
应该是一个DependencyObject
, PieceColor
用于SquareColor
, PieceColor
和PieceShape
您可以在XAML中或代码中使用相同的结果来执行UI。 我最近开始使用WPF,我推荐使用XAML方法。 从一开始就有点吓人,但它很快变得熟悉起来。 对我来说,这感觉就像是一个设计良好的UI设计方法,现在WinForms看起来像他们只是把.NET放在了前面。
您可以从拖放方式开始,但如果您像我一样,您将很快在XAML中工作,并使用设计界面进行视觉检查。
这可能不是我如何做的,但如果你查看过任何XML或HTML,那么即使你以前从未看过任何XAML,你也可能猜到它会显示什么:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="100" />
<RowDefinition Height="100" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Border Grid.Column="0" Grid.Row="0" Background="Black" />
<Border Grid.Column="2" Grid.Row="0" Background="Black" />
<Border Grid.Column="1" Grid.Row="1" Background="Black" />
<Border Grid.Column="3" Grid.Row="1" Background="Black" />
</Grid>
链接地址: http://www.djcxy.com/p/14807.html
上一篇: Chessboard in WPF