Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Style 
:(
    Опции темы
andrey_pro
Дата 12.5.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Имеется код XAML
В нем есть элементы со стилями, например:
...
<TableCell Style="{StaticResource ItemCell}">
<TableCell Style="{StaticResource ItemCell}">
....

Как можно из кода найти все элементы со стилем "ItemCell"???
PM MAIL   Вверх
-Mikle-
Дата 13.5.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Не тестировал, но вроде должно работать, проверь сам, потом скажешь.

Код

        private void FindAllStyles(FrameworkElement elem, Style tofind, ref List<FrameworkElement> result)
        {
            if (elem == null || tofind == null || result == null) return;

            if (tofind.Equals(elem.Style))
                result.Add(elem);

            for (int i = 0, cnt = VisualTreeHelper.GetChildrenCount(elem); i < cnt; i++)
                FindAllStyles(VisualTreeHelper.GetChild(elem, i) as FrameworkElement, tofind, ref result);
        }


Добавлено через 2 минуты и 38 секунд
Код

    List<FrameworkElement> result = new List<FrameworkElement>();
    Style style = this.Resources["ItemCell"];
    FindAllStyles(this, style, ref result);



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
andrey_pro
Дата 13.5.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



а если есть элемент FlowDocument, его как нибудь можно распарсить? найти все элементы с нужными стилями?
FlowDocument не наследник FrameworkElement
PM MAIL   Вверх
-Mikle-
Дата 13.5.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Тогда придется заменить ближайшим общим предком: DependencyObject

Код

        private void FindAllStyles(DependencyObject elem, Style tofind, ref List<DependencyObject> result)
        {
            if (elem == null || tofind == null || result == null) return;

            Style elemStyle = null;
            if (elem is FrameworkElement)
                elemStyle = ((FrameworkElement)elem).Style;
            else if (elem is FrameworkContentElement)
                elemStyle = ((FrameworkContentElement)elem).Style;

            if (tofind.Equals(elemStyle))
                result.Add(elem);

            for (int i = 0, cnt = VisualTreeHelper.GetChildrenCount(elem); i < cnt; i++)
                FindAllStyles(VisualTreeHelper.GetChild(elem, i), tofind, ref result);
        }


Опять таки код не проверял и оставил это для тебя. Потом отпишись.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
andrey_pro
Дата 13.5.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



этот элемент FrameworkContentElement нельзя перебрать через VisualTreeHelper.GetChildrenCount.

Как нибудь по другому можно это сделать?
PM MAIL   Вверх
andrey_pro
Дата 14.5.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



мне нужно найти все элементы со стилем ItemCell и их удалить

Сейчас проблема поиска этих элементов в FrameworkContentElement, и не знаю как потом их можно удалить из общего блока  smile 
PM MAIL   Вверх
-Mikle-
Дата 14.5.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Все эти элементы, которые тебе надо найти, это содежимое FlowDocument?


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
andrey_pro
Дата 14.5.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



да
PM MAIL   Вверх
andrey_pro
Дата 14.5.2009, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



нашел как перебрать элементы:
LogicalTreeHelper.GetChildren(this)

теперь нужно их удалить, не знаю как, подскажите плиз
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.