Может использовать классы Blend SDK в коде, но не XAML (Prism Desktop) - PullRequest
4 голосов
/ 01 апреля 2012

Я пытаюсь использовать CallMethodAction, связанный с элементом управления в окне WPF, используя метод из примеров библиотеки Prism и документации.По какой-то причине компилятор XAML отказывается признать, что пространство имен Microsoft.Expression.Interactivity.Core даже существует.Однако у меня нет проблем с использованием тех же классов из того же пространства имен в коде для этого представления.

В XAML я пробовал оба канонических пространства имен:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ic="http://schemas.microsoft.com/expression/2010/interactions"

кака также пространство имен CLR:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"

Во всплывающем браузере Intellisense для пространства имен отображается первое пространство имен, но не для пространств имен XML и CLR для второго.В любом случае следующий XAML не может быть скомпилирован:

<Button HorizontalAlignment="Right" Content="Cancel">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <ic:CallMethodAction />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

У него нет проблем с поиском тега Interaction.Triggers, но он жалуется на то, что тег CallMethodAction не существует в указанном пространстве имен.Фактически Intellisense для тега пространства имен ic действует так, как будто такого пространства имен нет.Однако я не получаю сообщение об ошибке, что пространство имен CLR не может быть найдено, что я делаю, если пытаюсь использовать несуществующее пространство имен.

Однако в конструкторе для этогоокно, я могу сделать это:

var x = new Microsoft.Expression.Interactivity.Core.CallMethodAction();

Это компилируется и работает нормально.Как это вообще возможно?

1 Ответ

3 голосов
/ 01 апреля 2012

Попробуйте удалить и заново добавить ссылку на Microsoft.Expression.Interactions.dll и *.Interactivity.dll

Однажды это случилось со мной, но я не знаю почему.Вот как я это решил.

...