2012-01-10 44 views
1

在LightSwitch中,在主/明細屏幕的詳細信息部分, 有一個顯示的網格,讓我們假設「產品」。網格中的每一行都有一個按鈕,如何找出已點擊的按鈕行

我已經這樣做了,每行的最後一列包含一個按鈕。

由LightSwitch的外觀背後產生這樣的代碼:

partial void DoSomething_Execute() 
{ 

} 

partial void DoSomething_CanExecute(ref bool result) 
{ 

} 

裏面這些方法,有沒有找出確切的方式被按下按鈕(即按鈕在哪一行)

請請注意,答案不是.SelectedItem(),因爲您可以按網格中任何一行的按鈕,而無需先選擇該行。

更新:

雖然我現在已經採取了不同的方法將數據顯示給用戶, 我還是想知道答案,所以更多的信息:

enter image description here

(對不起,客戶不會說英語)

如果您點擊其中一個按鈕,該行中的項目確實成爲SelectedItem 就像邁克爾說的那樣。這解決了_Executed處理程序的(非)問題,但它仍然不允許我們將_CanExecute()處理程序中的邏輯放到需要知道該按鈕綁定到哪個項目上。

partial void DoSomething_CanExecute(ref bool result) 
{ 
    result = !SelectedItem.IsClosed; 
} 

這只是簡單地更新所有按鈕到相同的狀態,每當一個行被選中(顯然)。

我想知道是否有解決方案?

+0

邊注:這裏的按鈕的想法是,它只能使用一次,所以現在當用戶關閉問題(按下按鈕),它只是從電網,這是一個有效的去除解。稍後我想用圖像按鈕替換按鈕。 – TimothyP 2012-01-12 14:01:58

回答

0

當您單擊默認LightSwitch數據網格中一行中的按鈕時,該行將變成「selectedItem」。見: List Box That Can Be Ordered By The End-User

+0

如果在Can_Execute處理程序中指定了result =!SelectedItem.IsClosed; (不是真正的代碼),並且您選擇了.IsClosed屬性爲true的行,所有按鈕都被禁用。所以問題仍然存在...... – TimothyP 2012-01-11 09:08:04

+0

你能解釋更多嗎?我不明白你的意思是「所有的按鈕被禁用」 – 2012-01-11 23:28:42

+0

嘿,我已經更新了這個問題,希望它有幫助。 – TimothyP 2012-01-12 13:57:35