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

Schreibe einen Kommentar