2014-03-03 66 views
1

我嘗試在treeView中設置一個元素爲「IsEnabled」= false,但我希望用戶可以選擇該項目。 這可能嗎?WPF IsEnabled和IsHitTestVisible

背景: 用戶可以取消刪除項目(IsEnabled = false),但他也可以取消刪除項目,但他必須選擇項目,但「IsEnabled」= false它不起作用。

解決方法:將「已刪除」項目的顏色設置爲另一個。 問題:子項不改變顏色出現,用戶可以在打開的「刪除」根節點

例子:

支架 文件 表

所有啓用的

現在我刪除該文件

括號 (del)文件號 Sheet

對於(del)文檔,「IsEnabled」爲false,用戶不能選擇要刪除的文檔。 隨着(del)文檔的顏色更改,工作表不會更改顏色。

我爲我的項目使用MVVM模式。

也許有人一個想法?

感謝每一個幫助 丹尼爾

+0

爲什麼不使用解決方法並設置子元素的顏色?海事組織你的「解決方法」是一個比禁用項目更好的做法 –

回答

0

鑑於你一般的問題,我覺得最簡單的辦法是做像你說的和樹視圖項添加一個遞歸ChangeColor()。

該方法應該遍歷其子元素,並且也對其子元素調用ChangeColor()。

+0

對不起,我沒有告訴我用DataBinding HierarchicalDataTemplate,所以我認爲很難得到一個元素的孩子或? – user3333428

+0

這使得它更容易。您的每個項目的視圖模型應該有一個可觀察的子集,以便HierarchicalDataTemplate.ItemSource可以綁定到它。那是對的嗎? – Bijan

+0

不在集合中。所以我不能在那裏設置任何東西。我找到了一個解決方法: 我給元素設置了另一種顏色,並阻止用戶展開此節點,以便他看不到已刪除對象下的對象,而且我不必更改孩子的顏色:) 感謝您的幫助! – user3333428