- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用默认颜色加载的 MetroWindow。我有一个选项供用户更改样式。在窗口中,我使用内容控件在初始化此窗口时从代码隐藏动态设置用户控件(此窗口是从另一个应用程序初始化的,因此没有 app.xaml,我使用窗口本身中的资源)。主窗口的代码如下。在用户控件中,我使用了一些标签和一个选项卡控件。在窗口上,我有一个选项供用户更改从可用主题中选择的主题(如在您的演示项目中)。在所有标签中,我都使用动态资源。
当窗口首次加载时,应用默认颜色并且所有内部控件也具有相同的主题。当我从窗口顶部更改主题时,窗口边框、标题、发光发生变化,但内部控件保持旧主题(如选项卡控件标题等)。我已经尝试了一切,但似乎没有改变。
下面是我的代码:
<Controls:MetroWindow x:Class="Test.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"
Title="MainWindow" Height="300" Width="300" ShowMaxRestoreButton="False" ShowMinButton="False"
BorderBrush="{DynamicResource HighlightBrush}"
GlowBrush="{DynamicResource HighlightBrush}" WindowStartupLocation="CenterScreen"
ResizeMode="NoResize" WindowTransitionsEnabled="False" TitleCaps="True"
BorderThickness="1">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
<ResourceDictionary Source="/Test;component/Resources/Icons.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Border Margin="5" BorderBrush="Transparent" BorderThickness="0">
<ContentControl x:Name="ChildContentControl"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
</ContentControl>
</Border>
</Controls:MetroWindow>
我的窗口代码:
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
this.Initialize();
}
public MainWindow(string title, UserControl childControl)
{
try
{
InitializeComponent();
this.Title = title;
this.ChildContentControl.Content = childControl;
}
catch (Exception de)
{
throw de;
}
}
}
我的用户控件 XAML
<UserControl x:Class="Test.UCDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Test"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Test;component/Resources/Icons.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" LastChildFill="True">
<Grid Height="60" DockPanel.Dock="Bottom">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="5"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1" Margin="5,0,5,0" Width="50" Height="50"
Style="{DynamicResource MetroCircleButtonStyle}" Command="{Binding OKCommand}">
<Rectangle Width="20"
Height="20"
Fill="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill"
Visual="{StaticResource appbar_check}" />
</Rectangle.OpacityMask>
</Rectangle>
</Button>
</Grid>
<Grid DockPanel.Dock="Top" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent"
SnapsToDevicePixels="True"
ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedSingleRowTabControl.xaml" />
</Grid.Resources>
<TabControl Margin="0,10,0,0" TabStripPlacement="Left" ItemsSource="{Binding Catalogs}" SelectedItem="{Binding SelectedCatalog}">
<TabControl.ItemTemplate>
<!-- this is the header template-->
<DataTemplate>
<TextBlock Text="{Binding Path=CaptionCat}" Foreground="{DynamicResource HighlightBrush}" FontSize="14" Margin="0,0,0,10" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding DataContext.SelectedCatalog.Books,RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel ScrollViewer.VerticalScrollBarVisibility="Disabled"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Controls:Tile Height="125" Width="300" IsEnabled="{Binding IsEnabled}" Title="{Binding CaptionBook}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
</Grid>
</DockPanel>
</Grid>
</Border>
</UserControl>
我的用户控件后面的代码:
public partial class UCDemo : UserControl
{
private VMDemo CatalogVM { set; get; }
public UCDemo()
{
try
{
InitializeComponent();
this.DataContext = new VMDemo();
}
catch (Exception de)
{
throw de;
}
}
}
最后是我如何从托管应用程序代码中调用窗口和嵌入式用户控件:
private void ShowDemoUI()
{
try
{
var child = new UILibrary.UCDemo();
UILibrary.MainWindow window = new UILibrary.MainWindow("Book catalog", child);
window.Height = 450;
window.Width = 700;
window.ShowDialog();
}
catch (Exception de)
{
throw de;
}
}
最佳答案
我认为您有 2 个选项可以解决这个问题。
Test.UCDemo
作为 VMDemo
类型的 DataTemplate,并将此模板的 VMDemo
传递给 Content
,所以你的 ContentControl
会自动为你做魔法(这只是一个建议,我没有测试过)Test.UCDemo
。关于c# - Mahapps,不适用于用户控件的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550412/
我在 WPF(C#) 中定义了一个带有绑定(bind)项源的 SplitButton。 只有当用户单击 SplitButton 右侧的箭头时,项目列表才会展开。 当用户点击SplitButton区域时
任何人都可以建议我如何在 MahApps Metro 布局中实现图 block 的拖放。谢谢.. 最佳答案 我们使用 punker76 的另一个库取得了成功。 它轻量级且易于实现! GitHub ht
我正在开发一个 Office 加载项,并想添加一个 WPF Mahapps Windows。 一切顺利,但我无法应用 Mahapps Windows 样式。 看教程here我看到我更新了 App.xa
我正在开发一个 Office 加载项,并想添加一个 WPF Mahapps Windows。 一切顺利,但我无法应用 Mahapps Windows 样式。 看教程here我看到我更新了 App.xa
我有一个使用默认颜色加载的 MetroWindow。我有一个选项供用户更改样式。在窗口中,我使用内容控件在初始化此窗口时从代码隐藏动态设置用户控件(此窗口是从另一个应用程序初始化的,因此没有 app.
我使用的是 MahApps.Metro 版本 1.2.0.0。我已将主题设置为深色主题。这在我运行应用程序时工作正常,但仍然在我的设计器中显示浅色主题。 关于导致此问题的原因的想法? 最佳答案 我在
这是我的按钮: 和 content使用此 Style 时总是使用小写字母 最佳答案 你应该使用 Controls:ButtonHelper.PreserveTextCase="True" 以防止小写
我开始介绍 MahApps .Metro(真的很棒)在我的 WPF 应用程序中,我最喜欢的按钮是默认的。问题是它把我所有的文本都大写,我不想要它。 最佳答案 您可以通过为 Window.Resourc
我想将 MahApps 库中的图标放入普通按钮中。我是这样试的: 结局是这样的: 那么如何将这个图标整合到这个按钮的合适位置呢? 最佳答案 您有 2 个选择。 首先,您可以使用图标资源(带有 Met
我正在使用Mahapps,但无法为窗口标题和组框标题等设置适当的大小写。 我尝试了谷歌搜索和版式设置。 如果有人知道你可以在这里帮我。 谢谢 最佳答案 新版本: 窗口标题 组框 设置样式(选项1)或
目前我正在使用 这就是结果: 我还发现了这种支持的颜色:https://github.com/MahApps/MahApps.Metro/tree/master/MahApps.Metro/Style
我正在尝试设置 SimpleChildWindow来自 MahApps 包 不幸的是,我无法理解示例并有几个问题: 它说: Directly in XAML 我应该把它放在哪里? 在父窗口中还是在单独
我正在使用 MahApps在 WPF 项目上,我正在尝试使用 MahApps 的内置样式对 DataGrid 控件提供一些验证, 但我定义的验证样式没有显示。 DataGrid 是:
如何为 Mahapps MetroWindow 添加从全屏模式到窗口模式的动态切换功能,反之亦然? 从普通窗口开始 切换到全屏后,右上角的窗口按钮(最小化/最大化/关闭)仍然可见(但它们不应该像标题栏
首先,非常感谢 MahApps。多么酷的项目! 我有一个用 WPF 编写的应用程序,我已经应用了 MahApps 库。我使用了本教程: http://mahapps.com/guides/quick-
我正在使用 MahApps Metro 窗口样式,并且我想在用户单击窗口的关闭按钮时捕获事件。 我已将 ShutdownMode 设置为 OnExplicitShutdown,所以我需要调用 Appl
有没有办法在 mahapps 地铁中根据每个控件更改主题(亮/暗)? 我的问题是,我有一个使用 Light 主题的窗口,但我有一部分的背景非常暗,我无法让 ComboBox 正确显示,即使我更改了背景
我正在尝试使用 MahApps.Metro 0.13.1.0 在窗口标题栏中添加一个“刷新”按钮。 我的 App.xaml 是这样的:
我有 ComboBox和每个索引我想改变这个 Watermark因此。 是否可以更改此 Property通过背后的代码? 最佳答案 如 mytextBox不在模板内或不同的名称范围内,您可以在代码中
有没有办法改变 MetroWindow 中的按钮前景? 我什至试图覆盖 IronicallyNamedChromelessButtonStyle 但前景色仍然相同。 编辑: 按钮位于窗口栏中(例如关闭
我是一名优秀的程序员,十分优秀!