Mam styl bloku tekstu, który jest ustawiony wewnątrz mojej app.xaml to jest następnie stosowane do textblocked przez moją aplikację i działa dobrze.Styl App.xaml nie może być użyty w UserControl, jak to możliwe?
Jednak pojawia się błąd: "nie można utworzyć wystąpienia typu", jeśli zastosuję ten styl do bloku tekstu w ramach kontroli użytkownika, dlaczego to problem?
<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>
Dzięki, 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>
Zmieniłem na DynamicResource zgodnie z sugestią i działa, działa również, jeśli ustawię styl w Po prostu nie interesuje mnie, w jaki sposób zakres App.Config nie dociera do UserControl, ale dociera do wszystkich kontrolek na dowolnej stronie lub oknie? –
4imble
zasadniczo musisz myśleć o UserControl jako jednostce autonomicznej. Może na przykład mieszkać w innym zespole. Kontrola niestandardowa działa w ten sam sposób. Wiedzą tylko, co im mówisz. Idealnie byłoby umieścić swoje style w ResourceDicationary i dołączyć je tam, gdzie ich potrzebujesz - App.xaml, kontrola użytkownika itp. Ułatwia to "skórze" lub "motywowanie" twoich rzeczy - po prostu zamień zasób słowniki. –
Ahh, okej. Ma sens. Dzięki – 4imble