powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / UIElementCollection и VisualCollection
10 сообщений из 10, страница 1 из 1
UIElementCollection и VisualCollection
    #39112312
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После того как в UIElementCollection вставляется новый UIElement, коллекция вызывает у родительского элемента MeasureInvalidate
в результате, если в OverrideMeasure добавить 10 элементов в коллекцию. то после завершения метода в очереди диспетчера будет 10 повторных расчетов разметки этого же элемента.
Как можно вставить UIElement или Visual так, чтоб это не вызвало повторный вызов MeasureOverride?
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39112499
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

максимум, что придумал, может есть нормальный человечий способ?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    public static class LayoutManager
    {
        private const string SetFlagMethodName = "SetFlags";
        private static void SetFlag(this Visual obj, params object[] parameters )
        {
            var type = typeof (Visual);
            var мisualFlagsType = GetVisualFlagsType();
            var method = type.GetMethod(SetFlagMethodName, BindingFlags.Instance | BindingFlags.NonPublic, Type.DefaultBinder, new[] { typeof(bool), мisualFlagsType }, null);
            method.Invoke(obj, parameters);

        }

        public static void SusspedLayout(Visual control)
        {
            control.SetFlag(true, 8U);
        }

        public static void ResumeLayout(Visual control)
        {
            control.SetFlag(false, 8U);
        }

        private static Type GetVisualFlagsType()
        {
            var assembly = Assembly.Load("PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
            return assembly.GetType("System.Windows.Media.VisualFlags");
        }
    }
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39112665
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
походу в этой ветки я 1 живу :(
WPF Последние из могикан :(
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39112685
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Не расстраивайся, я еще тут живу.
Просто до твоего уровня не дорос еще )
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39113268
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesКак можно вставить UIElement или Visual так, чтоб это не вызвало повторный вызов MeasureOverride?
А почему он не должен повторно вызываться?
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39113449
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoidRoman MejtesКак можно вставить UIElement или Visual так, чтоб это не вызвало повторный вызов MeasureOverride?
А почему он не должен повторно вызываться?
ну исходя из логики Microsoft, всё в принципе нормально, если добавился новый Visual элемент, значит возможно размер его родителя должен измениться, Я же хочу добавить # элементов и потом пересчитывать общий размер, при этом та накопившаяся очередь вызовов MeasureOverride, мне не нужно совершенно
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39113594
Smith27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, какие-то проблемы с производительностью, клиенты недовольны?

Ну дёрнется пару раз контрол при перерисовке - хрен с ним. Тебе охота лезть в дебри WPF, хакать его библиотеки и исправлять говноиндусские отрисовки? Уже давно есть классный и быстрый UWP и Windows Runtime XAML Framework. Иди к нам - всё будет хорошо.

В WPF дофига всяких настроек, настроечек и настроешек, которые надо знать, какие выставлять, чтобы всё работало как надо. Где ещё тебе надо выставить с десяток различных настроек отрисовки в атрибутах окна и контролов, чтобы они не заблурились?

http://stackoverflow.com/questions/6436501/wpf-why-does-text-and-elements-blur-if-i-use-dropshadow-effect-on-a-parent-item

http://stackoverflow.com/questions/8767781/text-blurring-at-any-text-options

http://stackoverflow.com/questions/25014708/wpf-blurry-font-in-one-control
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39113603
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Smith27,

тебе заплатили за рекламу или ты бот?
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39113609
Smith27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesSmith27,

тебе заплатили за рекламу или ты бот?
Я вредный хрен.
...
Рейтинг: 0 / 0
UIElementCollection и VisualCollection
    #39114806
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот у UIElementCollection есть виртуальный Add
Код: c#
1.
2.
3.
4.
5.
6.
public virtual int Add(UIElement element)
        {
            VerifyWriteAccess();
 
            return AddInternal(element);
        }


, который вызывает AddInternal , который на каждый элемент делает InvalidateMeasure.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
internal int AddInternal(UIElement element)
        {
            ValidateElement(element);
 
            SetLogicalParent(element);
            int retVal = _visualChildren.Add(element);
 
            // invalidate measure on visual parent
            _visualParent.InvalidateMeasure();
 
            return retVal;
        }


Если унаследоваться и переписать Add, точнее добавить что-то вроде AddRange(IEnumerable<UIElement> elements).
Или речь совсем не об этом?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / UIElementCollection и VisualCollection
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]