2010-04-19 4 views
3

모두 ComboBox 컨트롤에 적용되는 리소스 사전에 Style이 정의되어 있습니다. ComboBox 컨트롤 내에서, 그래서 같은 스타일을 참조 :이 작품을 좋아리소스 사전의 WPF 참조 스타일 및 트리거 사용

Style="{DynamicResource MyComboBoxStyle}"

.

ComboBox 컨트롤 중 일부에 일부 트리거를 추가 할 수 있기를 원합니다.

동적 리소스로 참조 된 Style을 사용하면서도 ComboBox 컨트롤 중 일부에 여전히 Trigger을 추가 할 수있는 좋은 방법은 무엇입니까?

답변

0

트리거를 적용 할 ComboBox 컨트롤에 대한 새 스타일을 만들고 새 스타일에 BasedOn 속성을 사용하여 기본 스타일을 설정합니다.

+0

시도 할 때 다음 오류가 발생합니다. 'Style'유형의 'BasedOn'속성에서 'DynamicResourceExtension'을 설정할 수 없습니다. –

+0

왜 DynamicResource를 사용하고 있습니까? StaticResource가 스타일 설정에 작동해야합니다. – Charlie

+0

스타일은 CAL을 사용하는 별도의 모듈에 있으므로 DynamicResource를 사용하려면이 스타일을 지정해야합니다. –

1

업데이트 : 질문을 다시 읽은 후, 나는이 정확히 OP에 대해 질문 한 것이 아니다 알고 있습니다. 나는 이것을 지울 수 있지만 아마도이 질문에 걸린 누군가에게 유용 할 것입니다.


는 여기에 XAML 리소스 사전은 해당 자원을 참조하고 스타일을 적용 윈도우와 함께, 템플릿 및 트리거를 정의하는, 예입니다.

이 템플릿을 사용하여에보고 사람을 도와 트리거 할 수 있습니다

"Style1.xaml"라는 내 자원

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<ControlTemplate x:Key="TonyTemplate" TargetType="Button"> 
    <Border Name="Border" 
      BorderBrush="Orange" 
      BorderThickness="3" 
      CornerRadius="2" 
      Background="Ivory" 
      TextBlock.Foreground="Black"> 
     <Grid> 
      <ContentPresenter RecognizesAccessKey="True" 
           Margin="{TemplateBinding Padding}"/> 
     </Grid> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter TargetName="Border" Property="Background" Value="Yellow" /> 
     </Trigger> 
     <Trigger Property="IsPressed" Value="True"> 
      <Setter TargetName="Border" Property="Background" Value="Chartreuse" /> 
      <Setter TargetName="Border" Property="BorderBrush" Value="DarkKhaki" /> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

내 MainWindow를 코드 XAML :

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="Style1.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Window.Resources> 
    <Grid> 
     <Button Width="100" Height="50" 
       Template="{StaticResource TonyTemplate}" 
       Content="Click me"/> 
    </Grid> 
</Window> 
관련 문제