2016-09-13 21 views
2

我正在使用xamarin.forms應用程序,我有問題,我無法解決。如何獲得網格行的子節點如果Grid.Row是已知的

1)我有多個Grid s一個接一個,包含按鈕,標籤和圖像。現在,在按鈕上單擊我想要更改圖像或將其旋轉到向下。但不知何故,我無法做到這一點。

我的第一次嘗試是獲取按鈕的父母並使用FindByName方法查找圖像。但FindByName返回null,但我可以在調試時看到父網格。

我的第二次嘗試是獲取按鈕行,並找到該行中的所有控件。因爲我的圖像與按鈕位於同一行。

我的結構是這樣

When I click on arrow(i.e image) it should be changed

我網工作正常,但只有旋轉的問題是存在的。

pubic void OnButtonClicked(object sender, EventArgs e) 
{ 
    var SenderButton = (Button)sender; 
    var row = Grid.GetRow(SenderButton); // Here i get row = 0 but dont know how to find other controls on same row. 

    Image upimage = SenderButton.Parent.FindByName<Image>("imageExpand"); // imageExpand is my image name in grid. 
    upimage.Source = "upimage.png"; 
} 

這裏upimagenull

非常感謝。

+0

你可以添加'XAML'代碼嗎? –

+0

請向每個帖子詢問一個問題 –

回答

1

我只回答你的第一個問題

你這樣做是正確,你可以使用public static int GetRow(BindableObject bindable)附加綁定屬性Grid.Row的價值。現在過濾網格的孩子很容易。

var button = (Button)sender; 
var row = Grid.GetRow(button); 
var grid = button.Parent as Grid; 
//assuming the image is in column 1 
var image = grid.Children.Where(c => Grid.GetRow(c) == row && Grid.GetColumn(c)==1); 
+1

謝謝您回答@Stephane。我一定會嘗試這個。 –

+1

它工作。謝謝@Stephane :) –

相關問題