Ich möchte eine Schriftfamilie für meine WPF-Anwendung definieren können. Verwenden Sie vorzugsweise ein Ressourcenwörterbuch als Thema, auf das verwiesen wird App.xaml
. Ich habe versucht, eine Style
wie folgt zu erstellen :
<Style TargetType="{x:Type Control}">
<Setter Property="FontFamily" Value="Segoe UI" />
</Style>
Das funktioniert aber nicht. Das Festlegen des Typs TextBlock
funktioniert für die meisten Steuerelemente, es gibt jedoch einige Steuerelemente, für die dies nicht gilt.
Ich weiß, dass Sie die Schriftart in einem Fenster festlegen können und alle untergeordneten Steuerelemente dieses Fensters die Schriftart erben lassen. Ich denke jedoch, dass alle Dialogfenster zur Standardschrift zurückkehren, was nicht genau das ist, was ich möchte.
Irgendwelche Ideen?
Style = (Style)FindResource(typeof(Window));
stattdessen direkt nach dem Aufruf von InitializeComponent () gesetzt und das hat bei mir funktioniert. Vielen Dank an avolk.parivedasolutions.com/2011/03/…Die meisten Lösungsvorschläge haben bei mir nicht funktioniert. Meine einfache Lösung:
Fügen Sie dies zu App.xaml hinzu:
<Style TargetType="{x:Type Window}"> <Setter Property="FontSize" Value="14" /> </Style>
Fügen Sie dies in Ihren MainWindow-Konstruktor ein (nach InitializeComponent):
Style = (Style)FindResource(typeof(Window));
quelle
Ein einfacher Weg, dies programmgesteuert zu tun:
public MainWindow() { this.FontFamily = new FontFamily("Segoe UI"); }
quelle
Tatsächlich können Sie hier eine vollständige XAML-Lösung erhalten, die einige der anderen Antworten kombiniert.
Wenn Ihr Hauptfenster aufgerufen wird
WinMain
(das, das Sie vor allen anderen laden), fügen Sie einfach einen Verweis auf einen Stil mit dem Namen zWinAll
<Window x:Class="MyNamespace.WinMain" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Title="WinMain" Height="450" Width="800" Style="{StaticResource WinAll}">
und definieren Sie dann Ihren Stil auf diese Weise
<Style x:Key="WinAll" TargetType="{x:Type Window}"> <Setter Property="FontFamily" Value="Comic Sans MS" /> <Setter Property="FontSize" Value="14" /> </Style>
quelle
Ich habe das gefunden :
TextElement.FontFamilyProperty.OverrideMetadata( typeof(TextElement), new FrameworkPropertyMetadata( new FontFamily("Comic Sans MS"))); TextBlock.FontFamilyProperty.OverrideMetadata( typeof(TextBlock), new FrameworkPropertyMetadata( new FontFamily("Comic Sans MS")));
quelle
Versuchen Sie diese einfache Problemumgehung in
App.xaml
(kein Code dahinter erforderlich):<SolidColorBrush x:Key="ForeBrush" Color="Blue" /> <Style x:Key="GenericTextStyle"> <!-- Generic control forecolor definition --> <Setter Property="Control.Foreground" Value="{StaticResource ForeBrush}" /> <!-- Add a definition for each unworking nested control --> <Style.Resources> <Style TargetType="{x:Type Label}"> <Setter Property="Foreground" Value="{StaticResource ForeBrush}" /> </Style> </Style.Resources> </Style>
Binden Sie einfach Ihren Windows-Stil daran. Funktioniert perfekt für mich. Im verschachtelten Baum müssen nur einige Eigenschaften definiert werden. Beispielsweise kann die Eigenschaft
FontSize
nur im generischen Abschnitt angegeben werden.Ich weiß nicht, warum das notwendig ist, um diesen Trick zu machen. Es ist seltsam, weil Label von Control abgeleitet werden sollte. Hat jemand eine Idee davon?
quelle