September 2009 Blog Posts

WPF: Resizer

27 September 2009 |

В XBAP приложениях из-за “отсутствия” диалоговых окон вместо них применяется Popup контрол. При его использовании возникает множество “неудобств”, одно из них изменение размера диалогового окна – popup. При решении этой задачи увидел интересное и достаточно общее решение для изменения размеров “любого” UIElement. По иронии судьбы для XBAP оно не подходит, потому что использует небезопасную функцию frameworkElement.PointToScreen, но это не так страшно потому что просто переделывается.

Resizer: WPF Control контрол хорошо оформлен, присутствует вменяемая демонстрация. Безотносительно popup, использование этого элемента управления может оказаться полезным при построение UI, демонстрационный пример наталкивает на такие мысли.

WPF часто заставляет прыгать через несколько уровней абстракции, поэтому наличие шаблонных решений становиться особенно важным, чтобы реже опускаться на “нижние” уровни.

VS 2008:Track Activity Item In SolutionExplorer

25 September 2009 |

В одной из предыдущих заметок VS 2008: Back To The Future рассказывалось о том как синхронизировать выбранный файл в SolutionExplorer с открытым на текущий момент файлом на редактирование. Такая потребность возникает когда нужно найти в SolutionExplorer текущий редактируемый файл. Недостаток решения то что файлы синхронизируются всегда автоматически, из-за этого через некоторое время работы дерево в SlutionExplorer “раскрывается” полностью, и это затрудняет навигацию.

Решение проблемы синхронизация по запросу. Как это сделать. Надо в VisualStudio открыть Tools –> Options, и на какое либо сочетание кнопок повесить вызов команды: View.Track ActivityInSolutionExplorer.

vsTrackActivityinSolutionExplorer

C#: operator ++

12 September 2009 |

Вопрос, что будет выведено на дисплей?

var arr = new List<int>() { 0, 1 };
int index = 0;
int value = arr[index++];          
Console.WriteLine(value);
Console.ReadKey();

Относительно не сложный вопрос для человека занимающегося разработкой. Ответ: 0.

Тот же самый вопрос, но уже для следующего кода:

var arr = new List<int>() { 0 };
int value = arr[arr[0]++];
Console.WriteLine(value);
Console.ReadKey();

Правильно ответить и правильно обосновать ответ на этот вопрос сложнее. Ответ: 1.

Объяснения этих примеров: Приоритет-против-порядка возвращаются.