2014-06-16 24 views
5

Sto provando ad aggiungere un pulsante "Aggiorna" nella barra del titolo della finestra, usando MahApps.Metro 0.13.1.0.MahApps.Metro icona non mostra

mio App.xaml è questo:

<Application x:Class="VersionSwitcher.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      StartupUri="Views/MainWindow.xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      d1p1:Ignorable="d" 
      xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
       <ResourceDictionary Source="/Resources/Icons.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
      <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:VersionSwitcher.ViewModel" /> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

E poi nel mio MainWindow.xaml:

<Controls:MetroWindow.WindowCommands> 
    <Controls:WindowCommands> 
     <Button ToolTip="{x:Static p:Resources.Button_Refresh}" 
       Style="{DynamicResource MetroCircleButtonStyle}" Width="30" Height="30"> 
       <Rectangle Fill="Black"> 
        <Rectangle.OpacityMask> 
         <VisualBrush Stretch="Fill" 
            Visual="{DynamicResource appbar_refresh}" /> 
        </Rectangle.OpacityMask> 
       </Rectangle> 
     </Button> 
    </Controls:WindowCommands> 
</Controls:MetroWindow.WindowCommands> 

ottengo un cerchio grigio all'interno della barra del titolo, ma nessuna icona! Qualsiasi icona (da Resources/Icons.xaml) fa la stessa cosa.

Se l'icona è posizionata nei contenuti della finestra invece della barra del titolo, fa la stessa cosa.

Cosa mi è mancato?

Grazie!

Aggiornamento

ho scoperto che l'impostazione di una larghezza e un'altezza al rettangolo mostra l'icona. Cosa devo fare per riempire sempre il pulsante?

+0

Hai provato dando il rettangolo di dimensioni ? quindi invece di '' prova '' ?? – Viv

+0

Sì, solo pochi secondi fa: ora mostra qualcosa. Non conosco molto il WPF quindi non so perché lo fa? – thomasb

+0

Controlla la mia risposta per il "perché" – Viv

risposta

7

Non si vede che cos la Rectangle ha la sua dimensione come 0 per ActualWidth e ActualHeight cui si può vedere tramite Snoop

Se non ne so molto di WPF come lei ha ricordato nel tuo commento, iniziare da familiarizzare con Snoop. Grande strumento che ti risparmiare da un sacco di momenti che graffia testa :)

enter image description here

Quindi, in inglese semplice, stiamo aggiungendo un Rectangle come Content di un Button. Ora il pulsante ha alcune dimensioni. Tuttavia il rettangolo non lo fa e quindi finisce con 0. Se fosse un testo, otterrebbe una dimensione implicita.

Quindi, per ordinarlo, dare al rettangolo una larghezza/altezza adeguata.

Se si desidera che il rettangolo abbia le dimensioni del pulsante, è possibile utilizzare un binding RelativeSource per la larghezza e l'altezza per ottenerlo dal pulsante. Tuttavia nel tuo caso si tratta di un pulsante Stile che utilizza già un'ellisse in modo da richiedere un po 'di padding.

MahApps.Metro da github:

ButtonsExample.xaml

mostra il loro approccio suggerito: (contento di dimensione esplicita meno di Button genitore)

<Button Width="50" 
     Height="50" 
     Margin="0, 10, 0, 0" 
     Style="{DynamicResource MetroCircleButtonStyle}"> 
    <Rectangle Width="20" 
       Height="20" 
       Fill="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}"> 
     <Rectangle.OpacityMask> 
      <VisualBrush Stretch="Fill" 
          Visual="{DynamicResource appbar_city}" /> 
     </Rectangle.OpacityMask> 
    </Rectangle> 
</Button> 
+0

Fantastico, grazie mille! – thomasb

Problemi correlati