請耐心等待這個問題的長度,我試圖儘可能描述。我是WPF編程的新手。我基本上試圖構建RadDataFilter control:試圖在WPF中構建查詢構建器控件
RadDataFilter用於通過構建查詢表達式來過濾集合。控制是一般使用從數據庫中帶來的所有數據,然後過濾它們。
但是,我試圖用它來構建SQL查詢表達式,然後我查詢數據庫以檢索數據。我們公司擁有Telerik產品的許可證,因此我必須嘗試使用該控件。不幸的是,控制不靈活的程度,我想customize the Left Dropdown(RadComboBox)。
由於我們有幾個用戶可以過濾的項目,因此向他們提供一個dropdpwn是不可行的。我想有一個自定義控件,而不是下拉菜單。
我有以下解決方法,這一問題:
提取模板爲控制和描述here覆蓋在我的XAML。但是,儘管如此,我無法改變控制權。我認爲這是由於我對WPF的知識不足。
嘗試更改Telerik的源代碼(我們也有代碼許可證)。但是,採用這種方法,我們需要不斷進行每次升級的更改,這對團隊來說是高維護。
嘗試構建自定義控件。
我正在尋找第三種方法。如果有一個簡單的方法(使用前兩種方法)或任何其他解決方案來實現這一點,請讓我知道,我會嘗試。
爲了實現第三種方法,我正在考慮在每個使用ControlTemplate(包含我的自定義控件)的節點上使用TreeView。我將覆蓋自定義控件的ToString()
方法,它給了我一個查詢條件。完成之後,我將遍歷根節點的子節點以構建最終的查詢表達式。然而,正如我注意到的,我們需要2個不同的ControlTemplates(一個允許創建一個過濾器表達式,另一個允許創建一個運算符,類似於RadDataFilter)。我不知道如何設置這樣的多個模板。
這聽起來對一些開發人員來說可能很簡單,但我對C#和WPF編程非常陌生,需要時間和經驗才能對此感到滿意。
請讓我知道,如果你知道任何其他解決方案,我可以嘗試解決這個問題。如果你覺得創建一個自定義控件更好,請指導我實現這個最好的方法。同時評論我創建自定義控件的方法。
謝謝!