ComboBoxItem에 대해 ContentTemplate을 설정할 수 없습니다. 거기에 내가하려고하는 이유는 콤보 상자에 내 데이터에 대한 2 개의 모습을 갖고 싶기 때문입니다. 콤보 상자가 열리면 (메뉴가 아래로) 텍스트 상자 (이미지 이름 포함)와 그 아래에 이미지 컨트롤이 필요합니다. 항목을 선택하면 콤보 상자에 이미지의 이름이있는 텍스트 상자가 표시됩니다.Silverlight의 콤보 상자에서 선택한 상태와 드롭 다운 상태에 다른 템플릿을 사용하는 방법?
ComboBox의 ItemTemplate 및 ItemContainerStyle을 수정하여이 작업을 수행 할 수 있다고 생각했습니다. ItemContainerStyle는 다음 ContentPresenter에 포함되어 있습니다
<ContentPresenter HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
그래서 난 그냥 여기에 ContentTemplate을 설정할 수 및 작동한다고 가정한다.
<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}"/>
...
가 여기 내 콤보 상자의 : :하지만 그것을 얻이 수없는 것
이<ComboBox Width="70" Margin="3,0,0,0"
ItemsSource="{StaticResource Source}"
ItemTemplate="{StaticResource ComboBoxDataTemplate}"
ItemContainerStyle="{StaticResource ComboBoxItemStyle1}"
/>
나는 일이 얻을 수있는 유일한 방법은 ItemContainerStyle에서 ContentPresenter에를 제거하고, 내 사용자 지정 서식 파일 (ComboBoxItemTemplate)의 내용으로 바꿉니다. 그러나 ContentPresenter가 더 이상 존재하지 않으며 ComboBox의 코드가 기존에 의존 할 수 있으므로이 방법을 사용해야한다고 생각하지 않았습니다.
다른 드롭 다운 및 선택한 템플릿으로 콤보 상자를 표시하는 데 도움이 필요하시면 크게 감사하겠습니다!
정말 도움이됩니다. 감사. 내가 'SelectedObject'를 대체 할 대상으로 고심하면서 명확 해지기는했지만 지금은 분명해 보인다.는 ContentPresenter에 대한 내 코드는 다음과 같습니다 DataTemplate> ContentPresenter.ContentTemplate> ContentPresenter> –