2014-01-13 14 views
0

此問題是一些最佳實踐/分享您的經驗/幫助我發現針對特定方案的解決方法。如何處理/解決方法焦點 - 竊取託管其自己的擴展程序/列表的自定義ListBoxItems

情況是一個列表框,其中有一堆項目表示相應圖表中的形狀;某些形狀具有子形狀(它們是分組形狀的容器)。

所需的功能是讓列表框能夠滾動瀏覽所有形狀,並通過單個或多個選擇(並且所選形狀可通過屬性網格編輯)選擇任何形狀。

此外,每個形狀可以拖放到列表框中以改變它的z順序。

這是目前所有的工作,使用telerik控件,但有一些惱人的行爲,我只能通過創建其他惱人的行爲來解決。

我想知道是否有人已經解決了此類問題,或者根據列表框中嵌套列表的情況分享了一些東西。

我將列出一些問題:

  1. 如果副外形列表(容器列表框項目嵌套列表)本身就是一個列表框,或者它是否具有可編輯的文本框,它需要有,單擊這些文本框不會選擇主列表框項目(包含形狀)。
  2. 如果點擊錯誤的位置,單擊並拖動時不會發生單擊這些子形狀的情況。
  3. 列表框滾動得到「破壞」(即,假設擴展的嵌套列表有20個項目,並且整個列表框只能在UI中可視化地顯示15個,所需的功能是列表框滾動通過子項目,但它只是跳到下一個主要項目,所以如果有太多的話,你永遠不會看到所有的子項目)。
    1. 令人討厭的是,僅在列表框項目上單擊/編輯嵌套控件後,外側列表框項目上出現焦點突出顯示,但實際上並未選擇該項目。只有鼠標懸停,選擇其他內容,然後鼠標懸停在高亮項目上方,焦點纔會再次消失。

我相信大部分讀者希望看到的代碼,但在這一點上,我在一個測試項目測試不同的配置這一點,它只是,裏面一個列表框的項目裏面基本的ItemsControl列表框,其中項目控件上有一些文本框。

簡而言之,它是「不可思議的」,我想知道是否有更簡單的WPF或telerik控件提供來處理我想要做的事情。

我已經考慮將整個列表框視爲樹視圖,但是我們需要對這些項目進行多次選擇,並且這種方法會涉及重做大量工作和數據模板。

我懷疑我需要阻止一些事件並做一些其他的手動事件處理,但這似乎很混亂,應該有一些更優雅的解決方案,包括焦點或觸發器,可能通過XAML完成。

我只是想知道是否有其他人已經找到了這種情況下的工作設置,允許選擇主要列表框項目以及編輯嵌套列表中的控件。

任何幫助,將不勝感激,

謝謝。

+0

也許http://stackoverflow.com/q/14522135/620360對你很有用。 – LPL

+0

我會咬下子彈,並執行以下操作之一:將其轉換爲樹形視圖,就像您在帖子中說的那樣,或者實際上只是將所有項目平鋪到一個列表中(可能使用數據模板添加白色/ splace/emulate a像樹狀視圖縮進)。我會牢記幾件事情:1)代碼隱藏是邪惡的 - 它會使你變得瘋狂,而且它似乎已經是可能了。一旦進入阻塞事件和重新路由重點業務,您將永遠不會離開。 2)重新思考UI設計通常比讓WPF做它不想做的事更容易。 – Andrew

+0

謝謝@LPL。我通過在ListBoxItem的最右側使用一個RadDropDownButton來解決這個問題,它有一個內部列表來顯示,並在下拉內容中顯示該列表。 – user2880413

回答

0

通過更改要求解決(下拉按鈕包含在容器列表框項目中以顯示內部列表 - 不會干擾選擇,並且很容易看到哪個區域可以選擇,哪個區域可以顯示內部信息/列表) 。