2012-04-04 95 views
0

我在Blend中设定了一个按钮,它在命名空间标题之后给了我这个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属性,但我不能assing风格吧。有什么建议么?

+0

你想在代码中做到这一点? – Zabavsky 2012-04-04 11:57:36

+0

@Zabavsky。是! – user1240679 2012-04-04 12:13:22

+0

在你的风格所在的同一个控件背后的代码中:'button.Style = this.Resources [“ButtonStyle1”] as Style;'。 – Zabavsky 2012-04-04 12:20:19

回答

0

您可以访问你的资源字典在你的代码,如:

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

错误:无法将类型'对象'隐式转换为'System.Windows.Style'。存在明确的转换(您是否缺少演员?) – user1240679 2012-04-04 12:09:46

+0

已编辑。我相信你会处理边界条件 – gaurawerma 2012-04-05 06:31:46

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 2012-04-07 05:34:03