Как сделать свободный контент Xaml осведомленным о пользовательских элементах управления - PullRequest
2 голосов
/ 23 ноября 2010

У меня есть свободный файл XAML ...

<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>

... что я хочу загрузить во время выполнения. Когда я получаю, я получаю исключение: «Ссылка на тип не может найти открытый тип с именем 'CustomControl'". Как я могу сделать свободный XAML осведомленным о моем пространстве имен?

Мне нужно использовать HoverOpacity, который является свойством зависимости CustomControl. Вот код, который я сейчас использую для загрузки XAML:

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

XamlReader.Load(resource.Stream);

Кстати, я понимаю, что XAML прост, и я мог бы просто вставить Style в код, но это привет мир XAML; это станет намного сложнее, включая анимацию и тому подобное.

P.S. Другим решением может быть способ присоединения файла XAML к пользовательскому элементу управления, производному от Panel (который не приводит к сбою Visual Studio 2008), или способ простого присоединения триггеров, триггеров данных, действий ввода и действий выхода к пользовательские элементы управления.

1 Ответ

5 голосов
/ 23 ноября 2010

Черт возьми, я понял это. Мне нужно было указать имя сборки с пространством имен; вот так:

<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>

Я дам ответный балл всем, кто мог бы ответить на мои «П.С.» вопрос в течение следующих двух дней. Вся эта ситуация кажется немного влажной, так что я был бы действительно заинтересован в альтернативах.

Спасибо:)

...