How to change MahApps.Metro dialog content using styles (remix)

大憨熊 提交于 2019-12-02 08:00:41

问题


sA version of this question has already been asked here.

I think the answer is clear and concise, but I don't quite understand it, and I didn't think I should start a massive chain of comments trying to figure it out(as posted out is proper etiquette here)

I'd like to add an extra button in my MahApps.Metro Dialog. I need a Browse button so that a user can input a directory. This answer shows how to do that, but I don't quite understand since I'm fairly new to C# and WPF.

What I don't understand is exactly where in my xaml file I should be placing the <Style></Style> section.

If I'm correct in guessing that it can go anywhere outside of my <Grid></Grid> then I'm getting errors that I don't understand.

My current code .xaml file.

<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>

If I insert the Style section above the Grid section I get an error The namespace "Dialog" is not defined

I thought the xmlns xmlns:Dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs"should have added the Dialogs?

Once I'm able to get the style set, I imagine I just add the below code from the previous answer (with the buttons I'd like).

<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>

What am I not understanding? Thanks in advance

Note

I didn't add my .cs code b/c I'm having no problem actually getting the standard async dialog showing.


回答1:


It turns out I was trying to do this correctly, but I was running into a problem explained here (The answer by Wouter).

It turns out I had to specify the assembly, so

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

Should be

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

That cleared up my errors in the Style.

So in the end, what I had to set the style was:

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

    </Style>

</Control.Resources>

with

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

at the top.



来源:https://stackoverflow.com/questions/33292197/how-to-change-mahapps-metro-dialog-content-using-styles-remix

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!