2014-02-05 74 views

回答

0

您可以使用隱式樣式。隱式的風格是,沒有一個「鑰匙」,例如,如果你在Application.Resources添加這種風格會影響您的應用程序的所有按鈕的樣式:

<Application.Resources> 
    <Style TargetType="Button"> 
    <Setter Property="Foreground" Value="Blue"/> 
    </Style> 
</Application.Resources> 

你可以將它設置爲例如,一個網格的資源,它只會影響該網格內的按鈕。

+0

謝謝,但這也不起作用。我只是編輯澄清問題,因爲這些按鈕是某種「特殊」的。 – user3049133

+0

@ user3049133這些「按鈕」的類型是什麼? – Rui

+0

是那些AppBarButton?如果這樣設置TargetType =「AppBarButton」,並在Page.Resources中設置樣式 – Rui

10

深深潛入MahAppscodе後......這裏是一個負責的按鈕來源: https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Themes/MetroWindow.xaml 如果你仔細觀察,你會發現,每一個款式都有與硬覆蓋風格前景觸發器編碼的「白」:

<Style.Triggers> 
     <DataTrigger Binding="{Binding ShowTitleBar, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Controls:MetroWindow}}}" 
        Value="True"> 
      <Setter Property="Foreground" 
        Value="White" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ShowTitleBar, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Controls:MetroWindow}}}" 
        Value="False"> 
      <Setter Property="Background" 
        Value="Transparent" /> 
     </DataTrigger> 
    </Style.Triggers> 

我的解決辦法是覆蓋所有必要的風格觸發:

<Style TargetType="{x:Type MahControls:WindowButtonCommands}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding ShowTitleBar, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MahControls:MetroWindow}}}" 
        Value="True"> 
      <Setter Property="Foreground" 
        Value="{StaticResource IdealForegroundColorBrush}" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

希望這將幫助任何人在我的情況。 特別感謝@Rui和@Sankarann的建議和幫助。 如果有人有更好的解決方案,請分享。

0

是你的顏色在appbar_帆布通過

Fill="{DynamicResource BlackBrush}" 

所以當你不在BlackBrush的控制,你真的不能一個的SolidColorBrush適用於它的MahApps庫中的一些其他控制將overwite您的設置應用的權利。

您需要指向的NuGet到鬆的資源文件(這樣你就得到一個Icons.xaml文件,本地播放)要改變顏色

複製appbar圖標(也許創建一個名爲MyIcons資源字典。 XAML並保存在那裏,在MyIcons.xaml加入MyIcons.xaml到您的App.xaml MergedDictionaries)

然後定義你的圖標(與新的顏色太):

<SolidColorBrush x:Key="IconBrushOrange" Color="Orange" /> 

<Canvas x:Key="my_connecting" All other fields...> 
    <Path Stretch="Fill" Fill="{StaticResource IconBrushOrange}" All other fields.... /> 
</Canvas> 

然後在您的用戶界面:

<Rectangle Width="20" Height="20"> 
    <Rectangle.Fill> 
     <VisualBrush Stretch="Fill" Visual="{StaticResource my_connecting}" /> 
    </Rectangle.Fill> 
</Rectangle> 
相關問題