Frage

Ich habe diese Bibliothek mit benutzerdefinierter Farbe Eigenschaften. Ich möchte in der Lage, diese Eigenschaften in XAML wie folgt zu verwenden:

    <Style TargetType="{x:Type eg:MyWindow}">
        <Setter Property="Background">
            <Setter.Value>
                <SolidColorBrush Color="CustomClass.CustomColorProperty"/>
            </Setter.Value>
        </Setter>
    </Style>

Der Namespace, enthält Custom ist bereits verwiesen. Wie soll ich über diese gehen? Danke.

EDIT:

Ich habe gerade bemerkt, dass Custom statisch ist, so kann ich eine Instanz davon in XAML nicht erstellen. Auch, wenn ich geben zB: Custom zeigt nicht in IntelliSense auf. Ich kann nicht alle Ihre Lösungen zu arbeiten, auch wenn sie sollten, wenn ich eine Instanz der Klasse hatte. Gibt es eine Abhilfe für diese Situation?

EDIT 2:

Dies ist die eigentliche Klasse und Namespace:

namespace Assergs.Windows
{
    public static class OfficeColors
    {
        public class Background
        {
            public static Color OfficeColor1 = (Color)ColorConverter.ConvertFromString("#e4e6e8");
            public static Color OfficeColor2 = (Color)ColorConverter.ConvertFromString("#dce0ed");
            public static Color OfficeColor3 = (Color)ColorConverter.ConvertFromString("#a8c3e0");
        }
    }
}

Und das ist der XAML-Namespace:

xmlns:aw="clr-namespace:Assergs.Windows;assembly=Assergs.Windows"

Und wenn ich diese Linie, wie von Zenuka:

<SolidColorBrush Color="{x:Static aw:OfficeColors.Background.OfficeColor1}"/>

Es wirft diesen Fehler bei der Kompilierung:

Cannot find the type 'OfficeColors.Background'. Note that type names are case sensitive.
War es hilfreich?

Lösung

verwenden:

<SolidColorBrush Color="{x:Static aw:OfficeColors+Background.OfficeColor1}"/>
Hinweis

das + -Zeichen anstelle eines Punktes verschachtelten Klassen verweist

Andere Tipps

Ich asuming Sie eine statische Eigenschaft auf der Custom haben? Dann könnten Sie verwenden:

<SolidColorBrush Color="{x:Static eg:CustomClass.CustomColorProperty}"/>

aber vielleicht müssen Sie das Namespacepräfix ändern ...

EDIT:
Das Problem liegt, weil Sie eine Klasse in einer anderen Klasse sind zu erklären ... Ich schlage vor, Sie die Klasse Backgroud außerhalb der OfficeColors Klasse bewegen und erklären sie statisch oder die Eigenschaften der Hintergrundklasse in die OfficeColors Klasse bewegen (vielleicht mit einem Hintergrund-Präfix), oder verwenden Sie Namespaces, wie Sie Art versuchen.

Viel Spaß:)

EDIT2:
Verwenden Sie Nir-Methode mit dem + -Zeichen ‚aw: OfficeColors + Background.OfficeColor1‘ verschachtelten Klassen zu verweisen, wusste nicht, dass man:)

würden Sie haben eine Instanz der Klasse, die als eine der Ressourcen zu erklären. (Unter der Annahme, CustomColorProperty ist nicht statisch)

<CustomNamespace.CustomClass x:Key=CcInstance />
<Style TargetType="{x:Type eg:MyWindow}">        
     <Setter Property="Background">            
         <Setter.Value>                
              <SolidColorBrush Color="{Binding Source={StaticResource CcInstance}, Path=CustomColorProperty} />            
         </Setter.Value>        
     </Setter>    
</Style>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top