Pergunta

Eu tenho um arquivo xaml solto ...

<Style
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyNamespace"
    TargetType="{x:Type local:CustomControl}">
    <Setter Property="HoverOpacity" Value="1.0"/>
</Style>

... Que eu quero carregar em tempo de execução. Quando faço, recebo uma exceção indicando: "O tipo de referência não pode encontrar o tipo público chamado 'CustomControl'". Como posso conscientizar o xaml solto do meu espaço para nome?

Eu preciso usar HoverOpacity que é uma propriedade de dependência do CustomControl. Aqui está o código que estou usando atualmente para carregar o XAML:

var resource = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/HoverStyle.xaml"));

XamlReader.Load(resource.Stream);

Btw, percebo que o xaml é simples e eu poderia apenas inserir o Style no código, mas este é um Hello World Xaml; vai se tornar muito mais complexo, envolvendo animações e tal.

PS Outra solução seria uma maneira de anexar um arquivo xaml a um controle personalizado derivado do painel (que não trava o Visual Studio 2008) ou uma maneira de anexar facilmente gatilhos, gatilhos de dados, ações de entrada e ações de saída para controles personalizados.

Foi útil?

Solução

Puxa, eu descobri. Eu precisava especificar o nome da montagem com o espaço para nome; igual a:

<Style
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyNamespace;assembly=MyAssembly"
    TargetType="{x:Type local:CustomControl}">
    <Setter Property="HoverOpacity" Value="1.0"/>
</Style>

Darei crédito a quem pode responder à minha pergunta "PS" nos próximos dois dias. Toda essa situação parece um pouco molhada, então eu estaria realmente interessado em alternativas.

Obrigado :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top