내 ComboBoxItem 콘텐츠에 일반 스타일을 활용하고 내 기본 클래스의 다른 속성에 텍스트 콘텐츠를 바인딩하려고합니다. 이것이 제가 생각해 낼 수있는 최선의 방법이지만 바인딩은 하드 코딩되어 있습니다. 그래서이 ItemContainerStyle을 사용하는 콤보 박스에 바인딩 된 모든 클래스에 대해 "MainText"및 "SubText"속성을 구현해야합니다.WPF ComboBox : 바인딩을 사용하여 일반 ItemContainerStyle을 활용하는 방법
질문입니다, 그래서 거기에 combobox에서 참조 된 스타일을 어디에 기본 클래스의 문자열 속성을 사용할 수 지정할 수있는 바인딩 소프트 소프트 코드 된 방법이 있나요.
<Style TargetType="{x:Type ComboBoxItem}" x:Key="ComboBoxItemStyleA1">
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Border x:Name="BB" Padding="8,3,8,3" Background="DarkGreen">
<StackPanel Margin="0">
<TextBlock Foreground="White" FontSize="16" Text="{Binding MainText}"/>
<TextBlock Foreground="White" FontSize="8" Text="{Binding SubText}"/>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" TargetName="BB" Value="#FF256294"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
그리고 스타일을 사용하는 ...
<ComboBox ItemsSource="{Binding Items}"
ItemContainerStyle="{StaticResource ComboBoxItemStyleA1}" />
또한
이 dowhilefor 수의 대답은 (많은 많은 감사 - WPF는 훌륭하지만 확실 발견의 항해입니다)내가 데이터를 사용 템플릿을 사용하여 원래 셀 모양을 정의한 다음 onmouseover 트리거를 지정할 수있는 컨트롤 템플릿이있는 comboboxitem 기반 스타일을 사용하려고합니다. 즉, 배경색 등을 변경하는 것이 었습니다.
Butj a) 위의 템플릿의 테두리 섹션을 제거 할 수 없습니다. 트리거는 targettype = "BB"에 의해 묶여 있습니다. 그래서 나는 데이터 저장소가 템플릿 바인딩에서 백그라운드를 가져올 수 있지만 컨테이너를 가져 오는 방법을 모르는 컨테이너에 트리거를 연결하려고합니다.
b) 주석을 달아도 콤보 박스는 내가 정의한 DataTemplate을 찾아서 사용하지 않습니다. 내 comboboxitemstyle에서 controltemplate을 정의하면 datatemplate을 가져 오는 것을 중단합니다.
나는 여기에 의미가 있기를 바란다 - 최종선은 내 cobobox 항목의 배경색을 설정하는 트리거를 적용 할 수있는 스타일을 원한다. 데이터가 무엇인지 알 필요가 없습니다. 즉,이 배경색에 바인딩 (템플릿) 할 데이터 템플릿을 연결할 수 있어야합니다.
매우 빠른 응답에 대해 감사드립니다.
BTW 그래서 내가 그에 대한 ItemContainerStyle
를 사용하지 않는 콤보 상자 목록 모든
나는 WPF를 내가 생각했던 것보다 더 가깝게 이해하고 있을지도 모른다. 나는 당신이 특히 스타일에서 바인딩을 지키고 있다고 말하는 것에 모두 동의한다. 이것은 정말로 내가하고 싶었던 것이다. (제쳐두고, "캡션"과 "설명"이 포함 된 래퍼 클래스를 작성하는 것에 동의합니다. 모든 콤보 박스는 동일한 모양과 느낌 및 멋진 솔루션을 갖게됩니다. ... 나는 이것을 사용할지도 모르지만 지금은이 퍼즐을 해결하려고 노력하고 있습니다 ....) –
죄송합니다 - new to stackoverflow - 내가 무슨 말을했는지 끝내자. –
나는 코멘트보다는 여기에 나의 질문을 편집했다, 고맙다 dowhilefor. –