2017-06-20 97 views
0

我使用我的按钮模板。现在我已经到了想要在运行时更改模板的地步。但是这不适用于这个模板。 模板看起来是这样的:WPF按钮XAML模板

<Application.Resources> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="OverridesDefaultStyle" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Border Name="Border" Background="Transparent"> 
         <ContentPresenter RecognizesAccessKey="True"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsKeyboardFocused" Value="true"> 
          <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
         </Trigger> 
         <Trigger Property="IsDefaulted" Value="true"> 
          <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
         </Trigger> 
         <Trigger Property="IsMouseOver" Value="true"> 
          <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
         </Trigger> 
         <Trigger Property="IsPressed" Value="true"> 
          <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
          <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
          <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          <Setter Property="Foreground" Value="Transparent"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Application.Resources> 

我用它在不同的窗口,因此作为应用程序资源。 如何访问此模板并仅针对某些按钮进行更改? 我想过创建不同的模板。但是我如何创建一个可以在运行时更改诸如Background等等的东西?

+0

它是如何不起作用的?你尝试了什么? –

+1

将基本风格的关键属性添加到按钮style.similar https://stackoverflow.com/a/19366835/2745294 –

+0

这与基础是非常有趣的。我试试看,谢谢。 –

回答

0

如果你给一个X:关键看你的资源,你应该能够做这样的事情:

<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/MyProject.Styles;component/ButtonStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 

然后只需使用:

<Button> 
<Button.Style> 
    <Style BasedOn="{StaticResource StyleFromButtonStyles}" TargetType="Button"> 

而且随着Style.Setter的覆盖要改变的财产