Tôi dường như không thể thiết lập một ContentTemplate cho một ComboBoxItem. Có lý do tôi đang cố gắng để làm điều này là tôi muốn có 2 lần xuất hiện cho dữ liệu của tôi trong hộp combo. Khi hộp kết hợp được mở (menu là xuống) Tôi muốn có một hộp văn bản (với tên của hình ảnh) và một điều khiển hình ảnh bên dưới nó. Khi tôi chọn mục tôi muốn hộp kết hợp để chỉ hiển thị một hộp văn bản với tên của hình ảnh.Làm cách nào để sử dụng mẫu khác cho trạng thái đã chọn và thả xuống trong hộp kết hợp trong Silverlight?
Tôi nghĩ tôi có thể đạt được điều này bằng cách sửa đổi ItemTemplate và ItemContainerStyle của ComboBox. ItemContainerStyle chứa ContentPresenter sau:
<ContentPresenter HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
Vì vậy, tôi giả định rằng tôi có thể đặt ContentTemplate tại đây và nó sẽ hoạt động. Nhưng tôi dường như không thể có được nó để làm việc:
<DataTemplate x:Key="ComboBoxDataTemplate">
<Grid>
<TextBlock Text="{Binding Path='Name'}"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="ComboBoxItemTemplate">
<StackPanel>
<TextBlock Text="{Binding Path='Name'}"/>
<Image Source="{Binding Path='Source'}" Width="64" Height="64"/>
</StackPanel>
</DataTemplate>
<Style x:Key="ComboBoxItemStyle1" TargetType="ComboBoxItem">
...
<Setter Property="ContentTemplate" Value="{StaticResource ComboBoxItemTemplate}"/>
...
Dưới đây là combo box của tôi:
<ComboBox Width="70" Margin="3,0,0,0"
ItemsSource="{StaticResource Source}"
ItemTemplate="{StaticResource ComboBoxDataTemplate}"
ItemContainerStyle="{StaticResource ComboBoxItemStyle1}"
/>
Cách duy nhất tôi có thể có được điều này để làm việc là để loại bỏ các ContentPresenter từ ItemContainerStyle, và thay thế nó bằng nội dung của mẫu tùy chỉnh của tôi (ComboBoxItemTemplate). Nhưng tôi không nghĩ rằng tôi nên sử dụng phương pháp này vì nó có nghĩa là ContentPresenter không còn tồn tại (và mã trong ComboBox có thể dựa vào nó hiện có).
Bất kỳ trợ giúp nào về việc hiển thị hộp tổ hợp có trình đơn thả xuống khác và mẫu được chọn sẽ được đánh giá cao!
Thực sự hữu ích. Cảm ơn. Chỉ cần làm rõ như tôi đã vật lộn với những gì để thay thế 'SelectedObject' với, mặc dù bây giờ nó có vẻ hiển nhiên. đoạn mã của tôi cho ContentPresenter trông như thế này: DataTemplate> ContentPresenter.ContentTemplate> ContentPresenter> –