Pergunta

Eu tenho esta biblioteca com o costume Cor propriedades. Eu quero ser capaz de usar essas propriedades em XAML como este:

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

O namespace que contém CustomClass já está referenciado. Como devo fazer isso? Obrigado.

EDIT:

Eu notei que CustomClass é estático, por isso não posso criar uma instância dele em XAML. Além disso, quando eu digito por exemplo: , CustomClass não aparecer no intellisense. Eu não posso obter qualquer de suas soluções para o trabalho, mesmo que eles devem, se eu tivesse uma classe instância. Existe uma solução para esta situação?

EDIT 2:

Esta é a classe real e 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");
        }
    }
}

E este é o namespace XAML:

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

E se eu usar essa linha, como sugerido por Zenuka:

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

Ela lança este erro em tempo de compilação:

Cannot find the type 'OfficeColors.Background'. Note that type names are case sensitive.
Foi útil?

Solução

Use esta:

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

Observe o sinal de + ao invés de um ponto para referenciar classes aninhadas

Outras dicas

Estou asuming você tem uma propriedade estática na CustomClass? Em seguida, você poderia usar:

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

mas talvez você precisa mudar o namespace prefix ...

EDIT:
As mentiras de problema, porque você está declarando uma classe em outra classe ... Eu sugiro que você se move a classe Backgroud fora da classe OfficeColors e declará-la estática ou mover as propriedades do fundo de classe para a classe OfficeColors (talvez com um prefixo de fundo), ou use namespaces como você é tipo de tentativa.

Divirta-se:)

EDIT2:
O método de utilização Nir usando o sinal + 'aw: OfficeColors + Background.OfficeColor1' para fazer referência a classes aninhadas, não sabia que um:)

Você teria que declarar uma instância da classe como um dos recursos. (Assumindo CustomColorProperty não é estático)

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top