如何使用样式(remix)

时间:2015-10-22 23:03:03

标签: c# wpf xaml mahapps.metro

此问题的sA版本已被问及here

我认为答案清晰简洁,但我不太明白,我认为我不应该开始大量的评论来试图解决它(因为贴出的是正确的礼仪{{3 }})

我想在我的MahApps.Metro对话框中添加一个额外的按钮。我需要一个Browse按钮,以便用户可以输入目录。 here答案显示了如何做到这一点,但我不太明白,因为我对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?

一旦我能够获得样式集,我想我只需添加上一个答案的下面代码(使用我想要的按钮)。

<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我没有问题实际上得到标准的异步对话框显示。

1 个答案:

答案 0 :(得分:1)

事实证明我试图正确地做到这一点,但我遇到了一个问题here(Wouter的回答)。

事实证明我必须指定程序集,所以

    xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"

应该是

    xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"              

这清除了我在Style中的错误。

所以最后,我必须设定的风格是:

<Control.Resources>
    <Style TargetType="{x:Type Dialogs:BaseMetroDialog}">

    </Style>

</Control.Resources>

    xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"              

在顶部。