2012-04-04 3 views
0

블렌드에서 버튼을 지정했는데, 네임 스페이스 헤더 다음에이 xaml을 넣었습니다.런타임시 버튼 스타일 지정

<UserControl.Resources> 
     <Style x:Key="ButtonStyle1" TargetType="Button"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Grid> 
          <Rectangle Fill="#BF4FFFF" RadiusY="10" RadiusX="10" Stroke="Black"/> 
          <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

런타임에는이 스타일에 대한 버튼을 생성하고 있습니다. 이것을 어떻게 할 수 있는가?
버튼에 button.Style 속성이 있지만 버튼을 사용하지 못했습니다. 어떤 제안?

+0

코드로 수행 하시겠습니까? – Zabavsky

+0

@Zabavsky. 예! – user1240679

+0

스타일이 동일한 컨트롤의 코드 숨김 :'button.Style = this.Resources [ "ButtonStyle1"]을 스타일로; – Zabavsky

답변

0

당신은 같은 코드에서 리소스 사전에 액세스 할 수 있습니다

button.Style = (Style)Application.Current.Resources["ButtonStyle1"]; 
+0

오류 : 암시 적으로 '개체'형식을 'System.Windows.Style'형식으로 변환 할 수 없습니다. 명시 적 변환이 존재합니다 (캐스트가 누락 되었습니까?) – user1240679

+0

수정 됨. 경계 조건을 처리 할 것입니다. – gaurawerma

0

나는 당신의 채우기 색상 코드가 잘못 생각합니다. 다른 코드를 사용해보십시오.

<UserControl.Resources> 
    <Style x:Key="ButtonStyle1" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Grid> 
         <Rectangle Fill="Red" RadiusY="10" RadiusX="10" Stroke="Black"/> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding   HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 


<Grid x:Name="LayoutRoot" Background="White"> 
     <Button Content="Button" Height="48" Style="{StaticResource ButtonStyle1}" HorizontalAlignment="Left" Margin="70,71,0,0" Name="button1" VerticalAlignment="Top" Width="178" /> 
</Grid> 
+0

처음 두 글자는 채우기 색상 형식의 투명도를 나타냅니다. 아무 문제 없습니다. – user1240679