2011-09-05 5 views
1

그리드가있는 보드 게임을 개발 중입니다. 모든 그리드에는 최종 사용자를위한 몇 가지 옵션이 있습니다. 사용자가 그리드 셀을 클릭하면 옵션 메뉴가 그리드 아래에 표시됩니다.XAML 게임에 가장 적합한 방법

에서 MainPage.xaml : 내 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에있는 선택기 객체를 보드 및 정사각형 객체에 전달해야합니까? 아니면 이벤트를 선택기에 전달할 수있는 방법이 있습니까?

건배 톰

답변

1

내가 세 가지를 할 것 :

  • 먼저, 모두가 기본에 정의 된 동일한 사용자 정의 RoutedEvent 선정 "와 같은 (이라는 것을, 높이 각 보드 타일이 클래스 "타일").
  • 둘째, 보드가 이벤트를보고하면. 이사회는 Tile.Chosen 이벤트를 수신해야 함이 새 속성 "ChosenTile"/ "ChosenTileInfo"로 설정해야/또는 그것이 무엇이든지간에.
  • 마지막으로 Chooser 컨트롤에 DependencyObject를 만듭니다 ( 은 "대상"과 같은 이름 임). ChosenTile에 바인딩 할 수 있습니다.

위의 코드는 뭔가를 찾고 끝낼 것 :

<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에를 만드는, 그냥 자신의 이벤트를 발생하는 것입니다

코드 숨김으로 다른 모든 작업을 수행하십시오.

관련 문제