2015-03-05 3 views
2

Итак, у меня есть страница мастера. И на моей главной странице у меня есть стиль, который задает стиль для всех кнопок.Как создать стиль в унаследованном стиле

Master Page

<Style TargetType="Button"> 
      <Setter Property="Background" Value="White" /> 
      <Setter Property="TextBlock.TextAlignment" Value="Center" /> 
      <Setter Property="RenderTransformOrigin" Value="-0.893,-11.7"/> 
      <Setter Property="VerticalAlignment" Value="Center"/> 
     </Style> 
в моем Detail Page

У меня есть кнопка, где я хотел бы добавить несколько триггеров через стиль

  <Button Content="{Binding DeleteMultipleButton}" Margin="0,0,5,0" CommandParameter="{Binding ElementName=files, Path=SelectedItems}" Command="{Binding DeleteMultipleFiles}"> 
       <Button.Style> 
        <Style TargetType="{x:Type Button}"> 
         <Setter Property="IsEnabled" Value="True"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Deleting}" Value="True"> 
           <Setter Property="IsEnabled" Value="False"/> 
          </DataTrigger>        
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
      </Button> 

Но это переписывает унаследованный стиль и я теряю стиль кнопки. Есть ли способ, которым я могу основать стиль кнопки в унаследованном стиле? (Я не могу сделать это через статический ресурс и ключ, потому что ресурс находится на другой странице)

+0

Есть ли какой-либо причине вы не хотите, чтобы определить стиль с помощью ключа в' App.xaml' или его выделенный словарь ресурсов? – Herdo

ответ

2

Вы можете использовать свойство BasedOn:

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> 

Держите базовый стиль кнопки, как она есть:

<Style TargetType="Button"> 
     <Setter Property="Background" Value="White" /> 
     <Setter Property="TextBlock.TextAlignment" Value="Center" /> 
     <Setter Property="RenderTransformOrigin" Value="-0.893,-11.7"/> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
    </Style> 

И применить свойство BasedOn к кнопке на Detail Страница:

<Button> 
     <Button.Style> 
      <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> 
       ... 
      </Style> 
     </Button.Style> 
    </Button> 
+0

Я пробовал это, но, к сожалению, это не работает. это должно основываться на базовом стиле кнопки, но не наследуемом стиле кнопки – user1

+0

Это, вероятно, было не очень понятно. Вам необходимо применить свойство BasedOn в стиле внутри кнопки Detail page. –

+0

Я обновил ответ для вас, это должно помочь прояснить ситуацию. –

0

Так Ве вызывают два стиля были на разных страницах, что делает унаследовав от стиля по умолчанию невозможно, так что я сделал создать файл ресурсов App.xaml с моим стилем в нем, а затем на обеих страницах добавьте код:

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Resource.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

в мой xaml. Это означало, что моя страница была тогда возможность переопределить унаследованное стиль с помощью кода Mike Eason «S:

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> 
Смежные вопросы