2
對於定製着想的消息框的風格,我用這個工具包,我從它的官方網頁複製樣式代碼:WPF - 自定義消息框的樣式在擴展WPF工具包
http://wpftoolkit.codeplex.com/wikipage?title=MessageBox&referringTitle=Documentation
我改變這一點:
<Application x:Class="TotaraEditor.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TotaraEditor"
xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
StartupUri="MainWindow.xaml"
ShutdownMode="OnMainWindowClose">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/MetroDark/MetroDark.MSControls.Core.Implicit.xaml" />
<ResourceDictionary Source="Themes/MetroDark/MetroDark.MSControls.Toolkit.Implicit.xaml" />
</ResourceDictionary.MergedDictionaries>
<SolidColorBrush x:Key="MyButtonHoverBrush" Color="#FF2D2D30" />
<SolidColorBrush x:Key="MyButtonPressedBrush" Color="#FF03A9DD" />
<Style x:Key="MyCloseButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource MyButtonHoverBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource MyButtonPressedBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Background" CornerRadius="0,0,0,0" Background="Green">
<Border Margin="1,0,1,1" BorderBrush="#59FFFFFF" BorderThickness="1" CornerRadius="0,0,1,0"/>
</Border>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
<Path x:Name="path" Fill="White" Margin="0,0,0,1" Visibility="Collapsed"
Height="60"
Width="7"
Stretch="Fill"
Opacity="1"
Data="M 2,6 C2,6 3,6 3,6 3,6 3,5 3,5 3,5 4,5 4,5 4,5 4,6 4,6 4,6 5,6 5,6 5,6 7,6 7,6 7,6 7,5 7,5 7,5 6,5 6,5 6,5 6,4 6,4 6,4 5,4 5,4 5,4 5,2 5,2 5,2 6,2 6,2 6,2 6,1 6,1 6,1 7,1 7,1 7,1 7,0 7,0 7,0 5,0 5,0 5,0 4,0 4,0 4,0 4,1 4,1 4,1 3,1 3,1 3,1 3,0 3,0 3,0 2,0 2,0 2,0 0,0 0,0 0,0 0,1 0,1 0,1 1,1 1,1 1,1 1,2 1,2 1,2 2,2 2,2 2,2 2,4 2,4 2,4 1,4 1,4 1,4 1,5 1,5 1,5 0,5 0,5 0,5 0,6 0,6 0,6 2,6 2,6 z"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type toolkit:MessageBox}">
<Setter Property="Background" Value="#FF1E1E1E" />
<Setter Property="BorderBrush" Value="#FF999999" />
<Setter Property="CaptionForeground" Value="#FFF1F1F1" />
<Setter Property="WindowBorderBrush" Value="#FF686868" />
<Setter Property="WindowBackground" Value="#FF2D2D30" />
<Setter Property="WindowOpacity" Value="0.3" />
<Setter Property="Foreground" Value="#FFF1F1F1"/>
<Setter Property="CloseButtonStyle" Value="{StaticResource MyCloseButtonStyle}"/>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
這是我如何使用它在後面的代碼:
var res = Xceed.Wpf.Toolkit.MessageBox.Show(
"R U sure?",
"Confirm dialog",
MessageBoxButton.YesNoCancel,
MessageBoxImage.None,
MessageBoxResult.Cancel,
null
);
if ("Cancel" == res.ToString()) {...}
else if ("No" == res.ToString()) {...}
else if ("Yes" == res.ToString()) {...}
else {...}
由於沒有辦法碰那些按鈕的XAML,我應該怎麼改變按鈕的風格?至少我想刪除標題的發光效果。
感謝。
UPDATE
我相信發光的效果不被應用到標籤的一些樣式引起的,它是標籤下方的風格矩形,我發現這WPF檢查:
當我把那個矩形的高度設置爲0之後,那個發光的東西就消失了。
謝謝jstreet,我更新的問題,你可以看到,在一塊代碼風格,我沒有看到與發光效果有關的任何東西,大部分代碼都是關於Button風格的。 – VincentZHANG
在另一方面,我使用的MessageBox讓用戶決定: 「RU確保」'VAR解析度= Xceed.Wpf.Toolkit.MessageBox.Show( , 「確認對話框」, MessageBoxButton.YesNoCancel, MessageBoxImage .None, MessageBoxResult.Cancel, null );如果(「取消」== res.ToString()){...} else if(「No」== res.ToString()){...} else if(「Yes」== res。 ToString()){...} else {...}' – VincentZHANG
@VincentZHANG請將樣式作爲文本發佈,而不是作爲打印屏幕,以便人們可以複製它。此外,請將代碼從您的評論移至您的帖子,然後明確您需要的內容。 – jsanalytics