2010-09-10 3 views
6

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

public class SomeAwesomaticBehavior : Behavior<ItemsControl> 
{ 
} 

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

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

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

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

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

ответ

3

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

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

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

+0

Вау, наконец, ответ после всех этих лет, спасибо. Я уже подозревал, что нет способа. Я пишу многократно используемое и очень общее поведение, но все же есть некоторые случаи, которые не всегда имеют смысл для всех типов DependencyObject. Итак, я думаю, что сейчас собираюсь подать заявку на функцию. – herzmeister

Смежные вопросы