0
我已經創建了我自己的組合框樣式以及樣式組合框項目。下拉需要顯示一些項目按鈕和其他沒有我的項目創建動態如下:WPF ComboboxItems與按鈕
ComboBoxItem typeItem = new ComboBoxItem();
typeItem.Content = "Test";
typeItem.Tag = i;
MyCombobox.Items.Add(typeItem);
我的問題是我如何應用此風格的一些項目,而不是別人,我的兩個comboboxitems是波紋管?
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="MinHeight" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="MinWidth" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="Foreground" Value="Black"/>
</Style>
<Style x:Key="MyComboBoxItem" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="MinHeight" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="MinWidth" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Grid>
<Label Content="{TemplateBinding Content}" Foreground="Black" Background="White" Height="26" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0"/>
<Button Grid.Column="2" Grid.Row="0" Content="Settings" Height="23" HorizontalAlignment="Left" Margin="2" Name="PositionSettings" VerticalAlignment="Center" Width="57"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
#dowhile非常感謝,我設法讓它顯示正確的風格。你是什麼意思「你不應該爲此重寫樣式,你想要的是DataTemplate和DataTemplate選擇器」。我是否會按照worng的方式添加按鈕? – user1145533 2012-07-24 09:29:27
像ComboBoxItem這樣的控件被分成兩部分,一部分由它的Style定義的Control本身負責應用程序的一般外觀和感覺,如何進行選擇,鍵盤導航等等。它的內容由DataTemplate就是ComboBoxItem內部顯示的內容,可以這麼說。除非你想大大地重新定義你的風格,否則我不會去碰它。但即使如此,我仍會考慮保留「業務邏輯」的風格,並使用Content和DataTemplates。同時記得標記幫助你接受的答案。 – dowhilefor 2012-07-24 09:38:53