【发布时间】:2020-09-02 11:02:48
【问题描述】:
我正在构建一个 WPF 应用程序,我想要自定义 MessageBox,但我看到这真的很乏味,我想使用 MaterialDesign 提供的 DialogHost。问题是我无法让它按照我想要的方式工作,所以让我描述一下当前的行为和想要的行为。
当前行为:
<materialDesign:ColorZone Grid.Column="1"
Grid.ColumnSpan="2"
Grid.Row="1"
Mode="Light"
Padding="16">
<DockPanel>
<materialDesign:DialogHost DockPanel.Dock="Right">
<Button x:Name="PowerButton"
ToolTip="{Binding PowerButtonToolTip, Source={StaticResource ResourceKey=ButtonsResources}}"
Style="{StaticResource MaterialDesignIconButton}"
Command="{x:Static materialDesign:DialogHost.OpenDialogCommand}">
<Button.CommandParameter>
<StackPanel>
<TextBlock Text="TODO" />
<StackPanel Orientation="Horizontal"
Margin="0, 20, 0, 10">
<Button Width="90"
Height="30"
Margin="10, 0, 0, 0"
Style="{StaticResource MaterialDesignOutlinedButton}"
Click="PowerButton_Click">
OK
</Button>
<Button Width="90"
Height="30"
Margin="10, 0, 10, 0"
Style="{StaticResource MaterialDesignOutlinedButton}"
Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}">
CANCEL
</Button>
</StackPanel>
</StackPanel>
</Button.CommandParameter>
<materialDesign:PackIcon Kind="Power" />
</Button>
</materialDesign:DialogHost>
<StackPanel Orientation="Horizontal">
<ToggleButton x:Name="MenuButton"
Style="{DynamicResource MaterialDesignHamburgerToggleButton}" />
<TextBlock VerticalAlignment="Center"
Margin="16 0 0 0"
Text="{Binding MainViewTitle, Source={StaticResource ResourceKey=ViewsResources}}">
</TextBlock>
</StackPanel>
</DockPanel>
</materialDesign:ColorZone>
发生的情况是,当我单击 PowerButton 时,DialogHost 会显示来自 Button.CommandParameter 的结构。这样做的问题是,当对话打开时,窗口不会“禁用”(变得有点黑且无法点击)。
我看到要实现此行为,我需要将 DialogHost 内的窗口的所有内容。但真的是这样还是我误解了什么?他们的示例 (see link) 并没有真正的帮助,因为似乎还有其他东西在后台运行。此外,打开“最顶层对话主机”的按钮的命令 materialDesign:DialogHost.OpenDialogCommand 似乎仅限于我。
【问题讨论】:
-
嗨,我不确定你的实现是否真的正确,无论如何这不是我做的方式或文档的方式。尝试获取to the demo,尤其是在第 45 行,以获得完美的示例并尝试应用于您的代码。如果您需要更高的精度,我可以为您提供帮助。
标签: c# wpf material-design-in-xaml