我創建了一個自定義的ComboBox
如下:(注意,代碼是不正確的,但你應該得到的總體思路。)的ComboBox
包含關係2個依賴屬性:TitleText
和DescriptionText
。綁定到所選擇的項目在一個ItemsControl
<Grid>
<TextBlock x:Name="Title"/>
<Grid x:Name="CBG">
<ToggleButton/>
<ContentPresenter/>
<Popup/>
</Grid>
</Grid>
我想用這個ComboBox
顯示廣泛的選擇。我創建了一個類中調用設置從DependencyObject
繼承來創建可用的項目,我創建了一個DataTemplate
這個Settings
對象的內容綁定到我的ComboBox
並創建了一個UserControl
其中包含ItemsControl
具有作爲我前面提到的DataTemplate
的模板。我可以用Setting
對象填充它。
<DataTemplate x:Key="myDataTemplate">
<ComboBox TitleText="{Binding Title}" DescriptionText="{Binding DescriptionText}"/>
</DataTemplate>
<UserControl>
<Grid>
<StackPanel Grid.Column="0">
<ItemsControl Template="{StaticResource myDataTemplate}">
<Item>
<Setting Title="Foo" Description="Bar">
<Option>Yes</Option><Option>No</Option>
</Setting>
</Item>
</ItemsControl>
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock x:Name="Description"/>
</StackPanel>
</Grid>
</UserControl>
我想有所選ComboBox
被放置在Description
TextBlock
在我UserControl
(由任一ComboBox
控制或彈出窗口的IsOpen
屬性的IsFocus
選擇的)的DescriptionText
。
的一種方式,我設法實現這一目標是取代我ItemsControl
由ListBox
但這引起幾個問題:它總是顯示滾動條,即使我禁用它,它也不會趕上焦點時,我的彈出是開放的,但只有當我明確選定的項目在我ListBox
,當我啓用了OverridesDefaultStyle
財產ListBox
的內容不會顯示在所有,我不得不重新主題ListBox
控制,以配合我UserControl
佈局...
有什麼最好和最簡單的方式讓我的DescriptionText
不使用ListBox
或創建自定義Selector
控制(因爲它具有與ListBox
相同的效果)?
末的目標是要遍歷所有的項目(也許讓他們進入一個ObservableCollection
或某種並將其保存到我的設置文件。
這還不完全清楚對我來說,你在這裏嘗試。你有一個代碼隱藏,或者你只是使用綁定? – codekaizen 2010-01-26 19:58:42
我有一個代碼背後的代碼,但目前它沒有真正使用。 當您選擇ComboBox項目(獲得焦點或彈出窗口打開)時,每個組合框都包含有關其所更改選項的小說明,該想法是使用正確的描述更新右側的描述文本塊。 – Jensen 2010-01-26 20:08:14