Ich habe einen Stil für einen Textblock, der in meiner app.xaml gesetzt ist, das dann auf Textblock durch meine Anwendung angewendet wird und funktioniert gut.App.xaml Stil kann nicht in Usercontrol verwendet werden, wie kommt es?
Allerdings bekomme ich einen Fehler: "konnte keine Instanz des Typs erstellen" wenn ich diesen Stil auf einen Textblock innerhalb meiner Benutzerkontrolle anwende, wie kommt es, dass dies ein Problem ist?
<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>
Danke, Kohan
- App.xaml-Code -
<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>
Ich habe zu DynamicResource wie vorgeschlagen geändert und es funktioniert, funktioniert es auch, wenn ich den Stil in Nur aus Interesse, wie App.Config der Anwendungsbereich erreicht kein UserControl, aber es erreicht alle Steuerelemente auf jeder Seite oder in jedem Fenster? –
4imble
Grundsätzlich müssen Sie sich ein UserControl als eigenständige Entität vorstellen. Es könnte zum Beispiel in einer anderen Versammlung leben. Ein benutzerdefiniertes Steuerelement funktioniert auf die gleiche Weise. Sie wissen nur, was du ihnen erzählst. Idealerweise würden Sie Ihre Styles in eine ResourceDicationary einfügen und sie dort einfügen, wo Sie sie benötigen - die App.xaml, Ihr Benutzersteuerelement usw. Dies erleichtert das "Skin" oder "Theme" Ihrer Sachen - tauschen Sie einfach Ressourcen aus Wörterbücher. –
Ahh, okay. Macht Sinn. Danke – 4imble