2012-04-30 40 views
6

內特定的按鈕,我得到了一個包含許多其他的按鈕和控制像這樣一個網格內的按鈕啓用已禁用的網格

<Grid IsEnabled="false"> 
    <Grid.ColumnsDefinition> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnsDefinition> 
    <Button Content="Run"/> 
    <Button Grid.Column="1" Content="Test"/> 
    <Button Grid.Column="2" Content="Cancel" IsEnabled="true"/> 
</Grid> 

正如你所看到的網格被禁用,但取消它裏面按鈕應該被啓用。

我遇到的問題是,即使我設置了內部按鈕被啓用,它保持禁用,可能是因爲它的父項被禁用。

有什麼辦法可以覆蓋這種行爲並強制啓用按鈕嗎?

我在後臺運行一個長進程的情況下使用它,因此應該禁用除取消進程之外的所有UI操作。

謝謝!

回答

2

編號設置IsEnabled屬性爲false會導致禁用所有嵌套的可視元素。人們應該將元素的內容看作其存在的一部分。禁用元素意味着禁用其所有部分。

最簡單的解決方法是更改​​標記以滿足您的需求。我寧願把取消按鈕出這個Grid所以它從來沒有受到我帶到這裏的Grid

+3

的代碼示例IsEnabled財產是一個更復雜的UI結構我的只是一個簡單的版本。我知道你的解決方案可行,但這意味着我會處理許多其他兄弟控制的啓用和禁用,這對於簡單的請求來說會是一個很大的開銷。我想知道是否有另一種解決方案。謝謝! – Dror

+0

解決方案是使用命令和/或MVVM – EvAlex