2011-05-05 185 views
0

在Access 2010(和其他?)中,如果您將「列表項目編輯窗體」分配給組合框,則打開組合框時會出現半透明編輯圖標,您可以單擊該組合框並打開一個窗體來添加/編輯組合框的數據源中的項目。有誰知道這是否可以在WPF/Xaml中複製,如果有的話如何?它看起來非常漂亮,並且比組合框旁邊的按鈕更好,這就是我目前的做法(我發現了很多關於如何在組合框列表頂部添加項目的示例,但這不是我後WPF組合框添加項目

非常感謝
千電子伏牛逼

回答

0

我不認爲這是一個完整的答案,但我有一些想法。我試圖想這一切通過,但也有可能那些不太合適或者可以做得更好的東西

創建一個繼承自ComboBox的新類;讓我們稱之爲EditableComboBox。給它一個TemplatePart類型Button,它的名字是PART_EditButton。依賴項屬性添加到對象類型的EditableComboBox;我們稱之爲EditorContent。 (這將是彈出對話框的內容。)

重寫OnApplyTemplate以獲取對按鈕的引用(使用GetTemplateChild)並將事件處理程序附加到按鈕的Click事件。當Click事件觸發時,創建並顯示一個子窗口,並將其Content屬性設置爲EditorContent。將其DataContext屬性設置爲EditableComboBox的DataContext。

使用Blend爲按鈕創建默認ControlTemplate的副本;我們稱之爲MyButtonControlTemplate。將按鈕的「不透明度」更改爲小於1的值,並將「故事板」添加到將Opacity設置爲1的MouseOver VisualState中。

使用Blend爲ComboBox創建默認ControlTemplate的副本;我們稱之爲EditableComboBoxTemplate。看到Popup節點?向其子網格添加另一個透明行,並在該行中添加一個名爲PART_EditButton的按鈕。將按鈕的模板設置爲MyButtonControlTemplate。然後爲EditableComboBox創建一個默認樣式,將EditableComboBoxTemplate設置爲Template。

當使用EditableComboBox時,將其EditorContent屬性設置爲可編輯項目的東西,可能是包含與EditableComboBox綁定到相同ItemsSource的ListBox的Grid。

我希望這至少有所幫助。我想提供示例代碼,但不幸的是我目前沒有足夠的時間。這是一個有趣的問題,所以稍後我會試着回顧一下,看看其他人是否給了你一個更好的主意和/或回答你可能會遇到的問題。

+0

安德魯,感謝您的回覆,您明顯給了我很多的想法,我很感激。我將在下週完成你的想法並報告回來(這個週末不能做任何事情)。 非常感謝 – 2011-05-06 07:50:31