Como tornar o conteúdo XAML solto ciente dos controles personalizados
-
27-09-2019 - |
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.
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 :)