在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应该是一个DependencyObjectPieceColor用于SquareColorPieceColorPieceShape


您可以在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

下一篇: How to avoid Java code in JSP files?