Такая ситуация. Есть класс
public partial class HighlightTextBlock : TextBlock
{
public ObservableCollection
// Using a DependencyProperty as the backing store for HighlightRules. This enables animation, styling, binding, etc...
public static readonly DependencyProperty HighlightRulesProperty =
DependencyProperty.Register("HighlightRules", typeof(ObservableCollection
// Ну далее еще много чего тут
}
А вот класс HighlightRule
public class HighlightRule : DependencyObject
{
public ObservableCollection
// Using a DependencyProperty as the backing store for Highlights. This enables animation, styling, binding, etc...
public static readonly DependencyProperty HighlightsProperty =
DependencyProperty.Register("Highlights", typeof(ObservableCollection
// Тут тоже много чего еще
}
вот как выглядит использование в XAML
Ну и вроде все должно быть норм, но очень уж тормозило, поэтому я залез в отладку и увидел, что на каждое правило приходится подсветок ровно столько, сколько всего существует правил. То есть в данном случае по числу элементов коллекции. Может, я не правильно как то пользуюсь свойствами зависимостей, потому что каждое правило ссылается на одни и те же подсветки (хотя как видно из xamla, каждому правилу соответствует одна подстветка в данном случае).
UPD:
Вот проект по примеру VladD
скачать
Ответ
Проблема вот где:
new PropertyMetadata(new ObservableCollection
У вас получается, что вы один и тот же экземпляр ObservableCollection
Делайте так:
public class HighlightRule : DependencyObject
{
public HighlightRule()
{
Highlights = new ObservableCollection
public ObservableCollection
public static readonly DependencyProperty HighlightsProperty =
DependencyProperty.Register(
"Highlights", typeof(ObservableCollection
// Тут тоже много чего еще
}
То же касается и HighlightTextBlock, разумеется.
Комментариев нет:
Отправить комментарий