Ограничить видимость поведения Silverlight / WPF - PullRequest
6 голосов
/ 10 сентября 2010

В Silverlight (и, вероятно, WPF), когда я определяю System.Windows.Interactivity.Behavior<T>, например, ItemsControl, как

public class SomeAwesomaticBehavior : Behavior<ItemsControl>
{
}

он появится в редакторе XAML в Visual Studio (и, вероятно, в Designer) даже для обычных элементов управления, отличных от Items, и будет выдавать неприятные исключения во время выполнения. Это противоречит присоединенным свойствам, которые будут отображаться только для предполагаемых типов.

Есть ли способ ограничить эту видимость? Может быть, какой-то магический атрибут (хотя это было бы избыточным объявлением)?

Если сегодня нет пути, надеюсь, так будет и в будущем? Потому что это, безусловно, сбивает с толку коллег и дизайнеров, когда появляется много Поведений, которые не имеют никакого отношения к текущему объекту.

Обновление: я подал элементы счета пользователя.

Silverlight: http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/1224253-restrict-behavior-visibility?ref=title

WPF: http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions/suggestions/1224259-restrict-behavior-visibility?ref=title

1 Ответ

3 голосов
/ 19 октября 2010

@ HeRz вы правы, нет способа отфильтровать поведение по их целевому типу.Blend (и, вероятно, против дизайнера) использует отражение, чтобы найти все создаваемые вами типы, которые наследуют от базового типа Behavior, и отображает их в списке ресурсов.

Blend не позволит вам перетащить поведение или триггер на элементкоторый не предназначен.Так что это должно помочь предотвратить их неправильное использование.

Я обычно пытаюсь написать поведение как куски кода многократного использования, не привязанные к конкретному случаю.Это просто инструменты с конкретными целями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...