我希望应用程序中的所有文本框在禁用或只读时都具有深灰色背景。我已经为我的App.xaml添加了一个样式,我认为它应该在我的应用程序中应用该样式。
的App.xaml:
<Application x:Class="XXXX.Deployment.Utils.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:XXXX.Deployment.Utils" >
<Application.Resources>
<local:InvertBoolConverter x:Key="invertBoolConverter" />
<Style TargetType="TextBox" >
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Background" Value="DarkGray" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="DarkGray" />
</Trigger>
</Style.Triggers>
</Style>
</Application.Resources>
样式正在设计窗口中应用,但在我实际运行应用程序时却没有。我创建了一个只有一个文本框的窗口,并将IsEnabled属性设置为False,因此我不确定为什么不应用此样式。
TestWindow.xaml:
<Window x:Class="XXXX.Deployment.Utils.TestWindow"
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:local="clr-namespace:XXXX.Deployment.Utils"
mc:Ignorable="d"
Height="200" Width="800">
<StackPanel>
<TextBox Margin="2" IsEnabled="False" />
</StackPanel>
TestWindow.xaml.cs:
namespace XXXX.Deployment.Utils
{
public partial class TestWindow : Window
{
public TestWindow()
{
InitializeComponent();
}
}
}
我从控制台应用程序中启动窗口并使用
TestWindow t = new TestWindow();
t.ShowDialog();
修改
我认为这个问题可能是因为App.xaml构建操作不是'ApplicationDefinition'。我们在一个公共实用程序类库中拥有所有UI,因此我们得到错误“库项目文件无法指定ApplicationDefinition元素”。即使我们的UI在类库中,我们是否有可能拥有控件的全局样式?