我在app.xaml中设置了一个文本块样式,然后将其应用于我的应用程序中的文本块并且工作正常。
但是我收到一个错误:“无法创建类型的实例”如果我将此样式应用于我的用户控件中的文本块,为什么这是一个问题?
<UserControl x:Class="Client.Usercontrols.MyButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" MinHeight="30" MinWidth="40"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Button Width="Auto" HorizontalAlignment="Center">
<Border CornerRadius="5" BorderThickness="1" BorderBrush="Transparent" >
<Grid>
<Image Name="tehImage" Source="{Binding ImageSource}" />
<TextBlock Name="tehText" Text="{Binding Text}"
Style="{StaticResource ButtonText}" /> <-- This causes error
</Grid>
</Border>
</Button>
谢谢, 钢钣
- App.Xaml代码 -
<Application x:Class="Client.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Mainpage.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/CascadingStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
- CascadingStyles.Xaml -
<Style TargetType="{x:Type TextBlock}" x:Key="ButtonText" >
<Setter Property="FontSize" Value="10" />
<Setter Property="VerticalAlignment" Value="Bottom" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="FontFamily" Value="Lucida Sans Unicode" />
<Setter Property="Foreground" Value="#0F004E" />
</Style>
答案 0 :(得分:10)
基本上,它找不到StaticResource
,因为它不在您的用户控件的文件中。 UserControl.xaml对App.xaml一无所知。
您应该使用DynamicResource
,这样它将在运行时应用。
答案 1 :(得分:4)
之前的回答绝对不正确。您绝对可以在应用程序级别定义资源,并从UserControls中引用它们。实际上,这通常可以提高性能以防止资源重复。如this page中“静态资源查找行为”标题下所述,在静态资源列表中第3次检查应用程序资源。
我猜你有一个错字或其他一些问题导致你的错误。你可以发布app.xaml代码吗?
答案 2 :(得分:0)
我在这样的问题上已经失去了几个小时,但它只适用于Expression Blend 4。
如本博文中所述:
http://blogs.msdn.com/b/unnir/archive/2009/03/31/blend-wpf-and-resource-references.aspx
Expression将尝试使用 Blend Application.Resources而不是您的应用程序 Application.Resources来解析StaticResources。这似乎仍然发生在Blend 4.0.30422.0
上