如何使用样式更改 MahApps.Metro 对话框内容(混音)
How to change MahApps.Metro dialog content using styles (remix)
s这个问题的一个版本已经被问过 。
我认为答案简洁明了,但我不太理解,而且我认为我不应该开始大量评论以试图弄清楚(发布是适当的礼仪here)
我想在 MahApps.Metro 对话框中添加一个额外的按钮。我需要一个浏览按钮,以便用户可以输入目录。 答案显示了如何做到这一点,但我不太明白,因为我对 C# 和 WPF 还很陌生。
我不明白的是 xaml 文件中我应该放置 <Style></Style>
部分的确切位置。
如果我猜测它可以在我 <Grid></Grid>
之外的任何地方是正确的,那么我会收到我不理解的错误。
我当前的代码.xaml 文件.
<Controls:MetroWindow x:Class="testApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"
Title="testApp" Height="auto" Width="auto"
EnableDWMDropShadow="True"
ResizeMode="CanResizeWithGrip"
WindowTransitionsEnabled="False"
WindowStartupLocation="CenterScreen" Loaded="OnLoaded">
<Grid>
<!--some content -->
</Grid>
</Controls:MetroWindow>
如果我在网格部分上方插入样式部分,我会收到错误消息 The namespace "Dialog" is not defined
我认为 xmlns xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"
应该添加对话框?
一旦我能够获得样式集,我想我只需添加之前答案中的以下代码(带有我想要的按钮)。
<Dialogs:CustomDialog x:Key="CustomDialogTest"
Style="{StaticResource NewCustomDialogStyle}"
Title="This dialog allows arbitrary content. It will close in 5 seconds."
x:Name="CustomTestDialog">
<StackPanel>
<TextBlock Height="30"
Text="This dialog allows arbitrary content. You have to close it yourself by clicking the close button below."
TextWrapping="Wrap"
Foreground="{DynamicResource AccentColorBrush}" />
<Button Content="Close Me!" />
</StackPanel>
</Dialogs:CustomDialog>
我不明白什么?提前致谢
备注
我没有添加我的 .cs 代码 b/c 我在实际显示标准异步对话框时没有遇到任何问题。
事实证明我试图正确地做到这一点,但我 运行 遇到了一个问题here(Wouter 的回答)。
原来我必须指定程序集,所以
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"
应该是
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
这消除了我在样式中的错误。
所以最后,我必须设置的样式是:
<Control.Resources>
<Style TargetType="{x:Type Dialogs:BaseMetroDialog}">
</Style>
</Control.Resources>
和
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
在顶部。
s这个问题的一个版本已经被问过
我认为答案简洁明了,但我不太理解,而且我认为我不应该开始大量评论以试图弄清楚(发布是适当的礼仪here)
我想在 MahApps.Metro 对话框中添加一个额外的按钮。我需要一个浏览按钮,以便用户可以输入目录。
我不明白的是 xaml 文件中我应该放置 <Style></Style>
部分的确切位置。
如果我猜测它可以在我 <Grid></Grid>
之外的任何地方是正确的,那么我会收到我不理解的错误。
我当前的代码.xaml 文件.
<Controls:MetroWindow x:Class="testApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"
Title="testApp" Height="auto" Width="auto"
EnableDWMDropShadow="True"
ResizeMode="CanResizeWithGrip"
WindowTransitionsEnabled="False"
WindowStartupLocation="CenterScreen" Loaded="OnLoaded">
<Grid>
<!--some content -->
</Grid>
</Controls:MetroWindow>
如果我在网格部分上方插入样式部分,我会收到错误消息 The namespace "Dialog" is not defined
我认为 xmlns xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"
应该添加对话框?
一旦我能够获得样式集,我想我只需添加之前答案中的以下代码(带有我想要的按钮)。
<Dialogs:CustomDialog x:Key="CustomDialogTest"
Style="{StaticResource NewCustomDialogStyle}"
Title="This dialog allows arbitrary content. It will close in 5 seconds."
x:Name="CustomTestDialog">
<StackPanel>
<TextBlock Height="30"
Text="This dialog allows arbitrary content. You have to close it yourself by clicking the close button below."
TextWrapping="Wrap"
Foreground="{DynamicResource AccentColorBrush}" />
<Button Content="Close Me!" />
</StackPanel>
</Dialogs:CustomDialog>
我不明白什么?提前致谢
备注
我没有添加我的 .cs 代码 b/c 我在实际显示标准异步对话框时没有遇到任何问题。
事实证明我试图正确地做到这一点,但我 运行 遇到了一个问题here(Wouter 的回答)。
原来我必须指定程序集,所以
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"
应该是
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
这消除了我在样式中的错误。
所以最后,我必须设置的样式是:
<Control.Resources>
<Style TargetType="{x:Type Dialogs:BaseMetroDialog}">
</Style>
</Control.Resources>
和
xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
在顶部。