2011-07-28 209 views
1

我在一個15 * 15的uniformgrid排列的ItemsControl中有225個三狀態切換按鈕(Off,Vertical,Horizo​​ntal)。有沒有辦法找到選中的按鈕,其檢查狀態和位置?只是一個小背景,我正在研究一個類似拼字遊戲的遊戲。ItemsControl兒童活動WPF C#

enter image description here

如。我如何找到紅場的狀態和位置?

  1. 當用戶點擊瓷磚我想啓動一個事件,其中程序記錄它的索引在這種情況下,例如, 57或7,3
  2. 然後,當用戶輸入他們的單詞時,是否可以在ToggleButton狀態(垂直,水平)的方向上預覽角色?但是沒有寫入ObservableCollection中的ItemsControl已經被綁定到了?

非常感謝

+0

您只能自己將得到什麼在你有沒有附加任何東西到你的廣場,確定他們的順序?您可以找到正方形的x/y位置,但這不一定是可靠或可維護的方法。 –

回答

1

我會解決這個問題(和其他事物一樣)通過數據綁定。

讓我們首先定義我們的視圖模型:

public class ScrabbleViewModel 
{ 
    readonly bool[,] matrix = new bool[15,15]; 

    public bool[,] GameMatrix 
    { 
     get { return matrix; } 
    } 
} 

並將其分配給您的用戶控件或窗口並創建複選框:

public partial class GameWindow : Window 
{ 
    public GameWindow() 
    { 
    InitializeComponent(); 
    this.DataContext = new ScrabbleViewModel(); 
    CreateCheckBoxes(); 
    } 

    void CreateCheckBoxes() 
    { 
    for(int y=0;y<15;y++) 
    { 
     for (int x = 0; x < 15; x++) 
     { 
     var chk = new CheckBox(); 
     chk.SetValue(Grid.RowProperty, y); 
     chk.SetValue(Grid.ColumnProperty, x); 

     var binding = new Binding(string.Format("GameMatrix[{0},{1}]", y, x)); 
     binding.Mode = BindingMode.TwoWay; 
     chk.SetBinding(CheckBox.IsCheckedProperty, binding); 

     grid.Children.Add(chk); 
     } 
    } 
    } 
}