Cómo hacer que el contenido Xaml suelta al tanto de controles personalizados
-
27-09-2019 - |
Pregunta
Tengo un archivo XAML suelta ...
<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 quiero cargar en tiempo de ejecución. Cuando me puedo obtener una excepción indicando, "Tipo de referencia no puede encontrar el tipo público denominado 'CustomControl'." ¿Cómo puedo hacer el XAML suelta consciente de mi espacio de nombres?
Tengo que utilizar HoverOpacity
que es una propiedad de dependencia de la CustomControl
. Aquí está el código que estoy utilizando actualmente para cargar el XAML:
var resource = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/HoverStyle.xaml"));
XamlReader.Load(resource.Stream);
Por cierto, me di cuenta de que el XAML es simple y tan sólo pudiera insertar el Style
en el código, pero esto es una XAML hola mundo; su va a ser mucho más complejo, que incluye animaciones y tal.
P.S. Otra solución sería una forma de cualquiera de adjuntar un archivo XAML a un control personalizado derivado de panel (uno que no bloquee Visual Studio 2008) o una forma de enganchar con facilidad disparadores, ficha disparadores, entrada acciones y acciones de salida a controles personalizados.
Solución
Gosh caray, lo he descubierto. Que necesitaba para especificar el nombre de ensamblado con el espacio de nombres; de esta manera:
<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>
Me va a dar crédito respuesta a cualquiera que pudiera responder a mi "P. S." cuestionar dentro de los próximos dos días. Toda esta situación parece un poco húmeda, por lo que estaría muy interesado en las alternativas.
Gracias:)