С установкой .NET F-k 4.0 и перевода проекта на него с .NET F-k 3.5 обнаружил странное и очень раздражающее поведение контрола GridSplitter в WPF. Постараюсь описать максимально понятно ситуацию.
Есть Grid. Внутри него разделение на 3 области. Центральная и боковые, как в VS. Чтобы было удобно, добавил сплиттеры, чтобы можно было скрывать если не нужно боковые области.
Теперь описание претензии к данному контролу. Когда начинаю производить ресайз области с помощью мыши, граница (область, в которой находится сплиттер) часто резко прыгает в какую либо сторону и перестает реагировать на движения мыши или в место, где она (граница) находилась до момента произведения действия.
Очень неприятная проблема и раздражает очень сильно. Сталкивался ли кто-нибудь с подобным?
Здравствуйте, Svat_P, Вы писали:
S_P>С установкой .NET F-k 4.0 и перевода проекта на него с .NET F-k 3.5 обнаружил странное и очень раздражающее поведение контрола GridSplitter в WPF. Постараюсь описать максимально понятно ситуацию.
Проверил — баг. В XAML вроде особого криминала нет (если не считать харкодинга размеров и лэйаута).
Советую запостить на connect.
Re: Странное поведение контрола GridSplitter в WPF.
Ппц. У меня такой феномен наблюдается: если у окна в этом проекте просто убрать Width="640" Height="480" , то при запуске программа висит и съедает 100% процессорного времени! Возвращаешь Width="640" Height="480" обратно, и она хотя бы запускается.
Re[3]: Странное поведение контрола GridSplitter в WPF.
Здравствуйте, Fortnum, Вы писали:
F>Ппц. У меня такой феномен наблюдается: если у окна в этом проекте просто убрать Width="640" Height="480" , то при запуске программа висит и съедает 100% процессорного времени! Возвращаешь Width="640" Height="480" обратно, и она хотя бы запускается.
Сменил Target Framework на .NET 3.5 Client Profile, эффект Width="640" Height="480" пропал. В том смысле, что ни с Width="640" Height="480" , ни без них, программа не запускается — виснет. Теперь помогает убрать WindowState="Maximized" Тогда запускается и с Width="640" Height="480".
Ты написал Убийцу .NET!
Re[4]: Странное поведение контрола GridSplitter в WPF.
Здравствуйте, Fortnum, Вы писали:
F>Здравствуйте, Fortnum, Вы писали:
F>>Ппц. У меня такой феномен наблюдается: если у окна в этом проекте просто убрать Width="640" Height="480" , то при запуске программа висит и съедает 100% процессорного времени! Возвращаешь Width="640" Height="480" обратно, и она хотя бы запускается.
F>Сменил Target Framework на .NET 3.5 Client Profile, эффект Width="640" Height="480" пропал. В том смысле, что ни с Width="640" Height="480" , ни без них, программа не запускается — виснет. Теперь помогает убрать WindowState="Maximized" :)) Тогда запускается и с Width="640" Height="480".
F>Ты написал Убийцу .NET!
Microsoft начинает очень сильно разочаровывать! =(
Re[5]: Странное поведение контрола GridSplitter в WPF.
Здравствуйте, Fortnum, Вы писали:
F>Здравствуйте, Svat_P, Вы писали:
S_P>>Microsoft начинает очень сильно разочаровывать! =(
F>Согласен. Чего одна NotifyPartitionIsZombie стоит. Но преимуществ все-таки больше ;)
Да уж... Всеравно обидно, что косяки вылазят там где их совсем не ожидаешь.
Re: Странное поведение контрола GridSplitter в WPF.
Здравствуйте, Svat_P, Вы писали:
S_P>Всем добрый вечер!
S_P>С установкой .NET F-k 4.0 и перевода проекта на него с .NET F-k 3.5 обнаружил странное и очень раздражающее поведение контрола GridSplitter в WPF. Постараюсь описать максимально понятно ситуацию.
S_P>Есть Grid. Внутри него разделение на 3 области. Центральная и боковые, как в VS. Чтобы было удобно, добавил сплиттеры, чтобы можно было скрывать если не нужно боковые области.
S_P>Теперь описание претензии к данному контролу. Когда начинаю производить ресайз области с помощью мыши, граница (область, в которой находится сплиттер) часто резко прыгает в какую либо сторону и перестает реагировать на движения мыши или в место, где она (граница) находилась до момента произведения действия.
S_P>Очень неприятная проблема и раздражает очень сильно. Сталкивался ли кто-нибудь с подобным?
Здравствуйте, Svat_P, Вы писали:
Оказывается, это известный баг.
В качестве workaround предлагают увеличить DragIncrement.
Проблема известна с 2007го. Всё гиперсложное исправление бага (как пишут) — замена вызова MS.Internal.DoubleUtil.AreClose(...) на System.Windows.LayoutDoubleUtil.AreClose(...).
Судя по комменту
Posted by Microsoft on 8/21/2009 at 2:35 PM
I do understand your concern, but we are beyond our ZBB date, therefore only ship-blocker bugs make the bar at this point. Considering that we have shipped this bug before, it is hard to make a case that we need to fix it in this release since it did not block our previous release. Thank you.
с исправлением ошибок не просто плохо, а очень плохо. Мдя. Windows team уже закидали бы тапками
Как бы им намекнуть, что пора как-то менять процесс разработки?
Re[2]: Странное поведение контрола GridSplitter в WPF.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Svat_P, Вы писали: S>Оказывается, это известный баг.
S>В качестве workaround предлагают увеличить DragIncrement.
S>Проблема известна с 2007го. Всё гиперсложное исправление бага (как пишут) — замена вызова MS.Internal.DoubleUtil.AreClose(...) на System.Windows.LayoutDoubleUtil.AreClose(...).
S>Судя по комменту S>
S>Posted by Microsoft on 8/21/2009 at 2:35 PM
S>I do understand your concern, but we are beyond our ZBB date, therefore only ship-blocker bugs make the bar at this point. Considering that we have shipped this bug before, it is hard to make a case that we need to fix it in this release since it did not block our previous release. Thank you.
S>с исправлением ошибок не просто плохо, а очень плохо. Мдя. Windows team уже закидали бы тапками:(
S>Как бы им намекнуть, что пора как-то менять процесс разработки?
Сума сойти... 3 с лишним года и одни и те же грабли.
P.S.: Теперь становится понятно почему в VS 2010 когда производим ресайз границ, у нас ничего не перерисовывается, а передвигается только "тень" границы. Те они знают и ничего не исправляют. Причем сами же просто тупо обходят эти грабли. Хотя бы в документации писали о существующем баге.
Re: Странное поведение контрола GridSplitter в WPF.
Здравствуйте, Svat_P, Вы писали:
S_P>Буду благодарен за любую помощь!
Задайте (и делайте так всегда) каждому GridSplitter-у явно следующие свойства: Width, HorizontalAlignment и VerticalAlignment. В данном случае достаточно добавить Width="7".