【问题标题】:Best approach for XAML gameXAML 游戏的最佳方法
【发布时间】:2011-09-07 06:18:01
【问题描述】:

我正在开发一个带有网格的棋盘游戏。每个网格都有一些供最终用户使用的选项。这个想法是,当用户单击网格单元格时,将在网格下方显示一个选项菜单。我的 XAML 看起来像:

Mainpage.xaml:

<Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="450"/>
         <RowDefinition Height="50"/>
     </Grid.RowDefinitions>
     <game:Board Grid.Row="0"/> 
     <game:Chooser Grid.Row="1" d:IsHidden="False"/>
</Grid>

板是一个网格,每个单元格中都包含一个方形对象。每个方形对象都有 MouseLeftButtonDown 侦听器。单击方形对象时,选择器菜单必须打开,并且必须将一些参数传递给该对象。

,因为选择者是另一个班级的成员,这将是什么最好的方法?我是否需要将选择器对象(在 MainPage.xaml 中)传递给板和方形对象?或者有没有办法将事件传播到选择器?

干杯 汤姆

【问题讨论】:

    标签: wpf silverlight xaml windows-phone-7


    【解决方案1】:

    我会做三件事:

    • 首先,让每个棋盘图块都引发相同的自定义 RoutedEvent (称为“Chosen”之类的东西,它已在基础上定义 “平铺”类)。
    • 其次,让 Board 监听 Tile.Chosen 事件。一旦 董事会看到事件,让它设置一个新属性 “ChosenTile”/“ChosenTileInfo”/或任何你需要的东西。
    • 最后,在选择器控件上创建一个 DependencyObject(它将是 称为“目标”之类的东西),以便您可以将其绑定到 选择瓷砖。

    上面的代码最终看起来像:

    <Grid>
         <Grid.RowDefinitions>
             <RowDefinition Height="450"/>
             <RowDefinition Height="50"/>
         </Grid.RowDefinitions>
         <game:Board Grid.Row="0" x:Name="MyBoard"/> 
         <game:Chooser Grid.Row="1" Target="{Binding ChosenTile, ElementName=MyBoard}"/>
    </Grid>
    

    另一种选择是仍然执行第一部分,但不是创建 DependencyObject,而是引发您自己的事件并在代码隐藏中执行其他所有操作。

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多