【发布时间】:2017-08-28 03:38:42
【问题描述】:
我想将样式(字体大小)应用到我的所有文本框时遇到问题,无论它们在哪里。
我当然找到了这些链接: Apply an application-level style to all textboxes
How to target all controls (WPF Styles)
但这对我不起作用。
第一个更好,因为您不需要使用键,而是转到所有文本框。
在我的 app.xml 中,我已经将样式应用于所有控件(应用颜色),所以我尝试了类似的方法(即使这对我来说还不够,因为这些样式并非无处不在) :
<Style x:Key="Type1Data" TargetType="{x:Type Control}">
<Setter Property="Background" Value="#FEE9E6"/>
<Style.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="50" />
</Style>
</Style.Resources>
</Style>
正如我所说,我也尝试过,但不起作用。
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="50" />
</Style>
知道我的问题是什么以及如何实现我想要的吗? 我能找到的所有问题都让我回到相同的代码,但没有找到一个有效的代码。
编辑:这是我当前的 app.xaml
<Application x:Class="myApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:myApp"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="TextBox"><!-- tried adding those 3 lines too-->
<Setter Property="FontSize" Value="50"/>
</Style>
<Style x:Key="Type1Data" TargetType="{x:Type Control}">
<Setter Property="Background" Value="Blue"/>
</Style>
<Style x:Key="Type2Data" TargetType="{x:Type Control}">
<Setter Property="Background" Value="White"/>
</Style>
<Style x:Key="Type3Data" TargetType="{x:Type Control}">
<Setter Property="Background" Value="Green"/>
</Style>
</Application.Resources>
</Application>
正如我所说,当前的样式并没有覆盖整个应用程序(我添加了需要的键,或者什么都没有)
edit : 如果我直接(作为第二个设置器)将字体大小添加到 Type 1,2 或 3,则适用字体大小。所以看起来,除了 app.xml 中的 3 之外,没有其他样式可以应用。
<Setter Property="FontSize" Value="50" />
应该获得不同文本框大小的代码示例(一个已经有样式,一个没有),它们在网格中:
<com:ViewControl x:Class="myApp.View.ViewControl"
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:syncfusion="http://schemas.syncfusion.com/wpf"
xmlns:input="http://schemas.syncfusion.com/wpf"
xmlns:local="clr-namespace:myApp.View"
xmlns:com="clr-namespace:RAPINF.PLL.Common;assembly=myApp.Common"
xmlns:entities="clr-namespace:myApp.Entities;assembly=myApp.Entities"
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="700">
<TextBox Style="{StaticResource Type1Data}" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding Data.Name}" VerticalAlignment="Center" />
<TextBox Grid.Row="0" Grid.Column="1" Margin="2" Text="{Binding Data.Name}" VerticalAlignment="Center" Grid.ColumnSpan="3" />
编辑:添加我有时使用并且有效的弹出窗口的代码
<sf:RibbonWindow x:Class="namespace:myApp.Common.DetailViewWindow"
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:sf="http://schemas.syncfusion.com/wpf"
xmlns:self="clr-namespace:myApp.Common"
mc:Ignorable="d"
d:Height="300" d:Width="400"
WindowStartupLocation="CenterOwner"
>
</sf:RibbonWindow>
我的用户控件如何添加到 Dock 中:
public void AddView(UserControl View, string sTitle, DockState docState)
{
int Width = 800;
int Height = 400;
DockingManager.SetHeader(View, sTitle);
DocumentContainer.SetMDIBounds(View, new Rect(30, 30, Width, Height));
DockingManager.SetState(View, docState);
DockingManager.SetShowCloseMenuItem(View, true);
DockingManager.SetDesiredWidthInDockedMode(View, Width);
DockManager.Children.Add(View);
ActivateView(View);
}
如果我使用扩展坞,我之前会这样做:
ApplicationContext.Current.AddView(View, DockState.Document);
和一个弹出窗口,几乎一样:
DetailViewWindow dlg = new DetailViewWindow(View);
dlg.ShowDialog();
因为,这两个代码与相同的视图一起使用(是的,完全相同),那么我猜问题来自于在 Dock 中添加视图,而不是在弹出窗口中。
码头管理器是否强制我使用钥匙?
感谢您的帮助。
【问题讨论】:
-
你能告诉我们你的 App.xaml 吗?
-
请提供您的问题的最小、完整和可验证的示例:stackoverflow.com/help/mcve
-
@MightyBadaboom 已添加:由于我展示的内容不多,因此我没有添加全部内容。 mm8:我提供了 app.xml,但除此之外,我展示了我尝试过的所有内容,结果是,我的文本框的字体大小上没有任何内容。
-
为什么您希望所有的 TextBox 都具有 Type1Data、Type2Data 和 Type3Data 样式?您应该在 App.xaml 中添加一个 TargetType 为 TextBox 的隐式样式(没有 x:Key)。
-
@mm8 这只是我尝试过的一些事情。隐含的意思是: ?我已经尝试过了(编辑代码)。如果没有,你能解释更多吗?我不习惯那些全局样式。