Anzeige FontFamily in Combobox
Mein Ziel ist zum Bearbeiten der text-Stile für meine Anwendung über die DependencyProperties. Ich habe ein Diagramm, in dem die Texte bearbeitet werden, die in Größe, fontfamily, Farbe, etc. Also möchte ich verwenden eine ähnliche Benutzeroberfläche wie eine rich-text-editor wie Word.
Ich bin mit diesem code in meinem TextStyleVM http://shevaspace.blogspot.com/2006/12/i-have-some-fun-with-formattedtext_14.html
Also ich habe ein FontFamilyProperty und eine Getter-und Setter für:
public static DependencyProperty FontFamilyProperty =
DependencyProperty.Register(
"FontFamily",
typeof(FontFamily),
typeof(OutlinedText),
new FrameworkPropertyMetadata(
SystemFonts.MessageFontFamily,
FrameworkPropertyMetadataOptions.AffectsRender |
FrameworkPropertyMetadataOptions.AffectsMeasure),
new ValidateValueCallback(IsValidFontFamily));
public FontFamily FontFamily
{
get { return (FontFamily)base.GetValue(FontFamilyProperty); }
set { base.SetValue(FontFamilyProperty, value); }
}
Dann gibt es eine ToStyle Methode, die legt den Stil für die Beschriftungen des Diagramms, die manipuliert werden:
Style style = new Style();
Binding fontFamilyBinding = new Binding("FontFamily");
fontFamilyBinding.Source = this;
Setter fontFamilySetter = new Setter();
fontFamilySetter.Property = TextBlock.FontFamilyProperty;
fontFamilySetter.Value = fontFamilyBinding;
style.Setters.Add(fontFamilySetter);
return style;
Nun diese Werke für eine TextBox. Das Textfeld zeigt den aktuellen FontFamily, und wenn ich geben Sie einen neuen, gültigen FontFamily wie z.B. Arial in der textbox die FontFamily des labels geändert werden.
Jedoch, was ich möchte, ist ein Kombinationsfeld ist, zeigt die SystemFonts und wo kann ich wählen Sie ein FontFamily für meine Etiketten. Jedoch, die Bindung scheint nicht zu funktionieren. Weder die system-fonts noch die aktuellen fonts des labels angezeigt werden. Die combobox ist einfach leer.
Dies ist mein xaml:
<r:RibbonLabel Content="FontFamily" />
<!--these do not work-->
<r:RibbonComboBox SelectedItem="{Binding FontFamily}"/>
<r:RibbonComboBox ItemsSource="{Binding FontFamily}"/>
<!--this works-->
<r:RibbonTextBox Text="{Binding FontFamily}"/>
Nun, ich nehme an, ich habe einen anderen Setter für ein Kombinationsfeld in der ToStyle Methode. Aber ich habe keine Ahnung, welcher das ist. Vielleicht etwas wie dieses:
fontFamilySetter.Property = ComboBox.ItemSource;
Jedoch, wenn ich die Eigenschaft der TextBox funktioniert immer noch. So ist dies der falsche Ort, um zu starten? Ich würde auch dankbar sein, wenn jemand könnte Hinweis mich auf einige Dokumentation über die Verwendung dieser Stil-, Setter-, Bindung-Schlüssel-Worte, die in der ToStyle Methode, da dies von jemand elses code, mit dem ich arbeite.
InformationsquelleAutor Torsten | 2010-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
ItemsSource hier erwartet Sie eine Sammlung; z.B. Schriftarten.SystemFontFamilies
Tatsächlich, hier ist ein netter link, Abdeckung, schriftart-Auswahl:
http://www.hanselman.com/blog/LearningWPFWithBabySmashCustomerFeedbackAndAWPFFontComboBox.aspx
Scott Hanselman zeigt auch, wie zu Rendern jedes font-Element in combobox mit eigener Schrift-Familie.
Hinzugefügt pro OP Kommentar.
Hier ist ein Beispiel der Bindung an die Abhängigkeitseigenschaft. Eigenschaft mit der Bezeichnung "MyFontFamily" zu vermeiden Kollision mit den bestehenden Fenster-Eigenschaft. Sorry, keine Ribbon-Steuerelemente (ich habe bare 3.5 sp1).
Window1.xaml
Window1.xaml.cs
Hi Torsten; ich habe ein Beispiel von dp verbindlich. Sieht nicht wie es irgendwelche Probleme mit, es sei denn, Sie möchten etwas wirklich ungewöhnliches.
Vielen Dank für Ihre avid-support. Wanderte ich meinen code in das Menüband und dort Ihr Beispiel funktioniert. Ich habe einige kleinere änderungen gibt es zwar, Sie ist jedoch auf Ihrer Idee basieren: 1. Ich musste Mode=TwoWay auf die SelectedItem-Bindung 2. Ich verwendet FrameworkPropertyMetadata auf meinem DP (siehe shevaspace.blogspot.com link in meinem startpost), die UIPropertyMetadata funktioniert auch, obwohl, denke ich. Ich wirklich schätzen Ihre Hilfe.
InformationsquelleAutor DK.
Einen nur in der Xaml-Lösung mit Schriftarten, sortiert in alphabetischer Reihenfolge:
InformationsquelleAutor pr0gg3r
Einer großen Schriftart Combobox für WPF können hier gefunden werden:
CodeProject.com: Ein XAML-Nur die Schriftart ComboBox
Es ist Reine XAML, können nur kopiert und eingefügt und sogar sortiert die Schriften richtig. Der Artikel beschreibt schön die Probleme aufgetreten sind und wie Sie zu lösen.
InformationsquelleAutor Peter Huber