Сообщения

Silverlight: The "ValidateXaml" task failed unexpectedly.

Ошибка возникает при компиляции солюшена с проектом Silverlight в Visual Stusio. Такая ошибка связана с тем, что в вашем GAC появилась сборка из Silverlight или из Silverlight Toolkit. Удаляйте эту сборку из GAC и все заработает. Гугл тоже согласен с таким решением. Обычно это сборки с версией 2.0.5.0. Имейте ввиду, что в GAC может быть совсем не та сборка, которая указана в ошибке. Может произойти так: В GAC уже лежат сборки, относящиеся к Slverlight, которые ссылаются на другие сборки, которых в GAC нет.   Полный текст ошибки, который был у меня: Error 1 The "ValidateXaml" task failed unexpectedly. System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. Не удается найти указанный файл. File name: 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'    at System.ModuleHandle.ResolveType(Int32 typeToken, Runtim...

Как добавить сайт в Bing.

Для добавления в Bing вы можете воспользоваться следующей страницей: http://www.bing.com/webmaster/SubmitSitePage.aspx Учтите, только что если вы авторизуетесь с этой страницы с помощью вашего Live ID, то эта страница средиректит на http://www.bing.com/webmaster/WebmasterManageSitesPage.aspx , для регистрации Web-мастера сайта. Введите повторно первую ссылку в браузере, в этом случае, и спокойно регистрируйтесь без заморочек.

Error message: cannot access non-static method in static context.

Вот одна из причин этого сообщения: Инициализация поля происходит вне конструктора, причем при инициализации требуется нестатический метод класса. Пример: Поле класса хранит ссылку на таймер. При инициализации нужно в конструктор таймера передать не статический метод класса, который будет служить обработчиком тиков таймера. В этом случае и возникнет эта ошибка. Нужно инициализацию таймера просто перенести в конструктор класса. Следующий код не даст скомпилироваться: private readonly Timer _timer = new Timer (state => MyMethod(MyParam ), SomeState , Some Interval, Some Interval ); В этом случае нужно переписать так: private readonly Timer _timer; public MyClass() {     _timer = new Timer (state => MyMethod(MyParam ), SomeState , Some Interval, Some Interval ); } .

Silverlight: Как определить активно ли приложение / окно Silverlight, имеет ли оно фокус.

Silverlight 3. У меня был некий перерыв в работе с Silveright и что-то я не вспомнил, как определить, что окно / приложение Silverlight активно или нет. И сделать это нужно вне зависимости, браузерное это приложение Silverlight или это "Out Of Brouser", всю страницу в браузере это занимает или нет.   Проблема в том, что события LostFocus и GotFocus не дают возможности определить, что приложение активно или нет.   Пока я это сделал через отслеживание событий на корневом элементе - Application .Current.RootVisual .   Если вы мне подсажете / напомните, как это определять более красиво, то буду вам очень благодарен.   Конечно я это не тестировал на всех вариантах работы Silverlight, но полагаю, что это должно работать.   Идея следующая, например, для определения того, что приложение не активно: Если после события потери фокуса происходит событие MouseLeave, то значит приложение перестало быть активным. Любое же событие получение фокуса говорит о том, что приложени стало активным.

Silverlight: Популярный вариант утечки памяти связанный с динамическиизменяемым деревом элементов приложения Silverlight.

Изображение
Нужно помнить следующий вариант утечки памяти, т.к., как мне кажется, он один из самых частых. Вы создали элемент. (Все, забудьте в WPF / Silverlight слово "контрол"  ). Вы добавляете этот элемент динамически в дерево элементов приложения Silverlight. По действию пользователя вы заменяете этот элемент его новым инстансом (экземпляром). Все красиво работает, все заменяется и потом удаляется сборщиком мусора, но до тех пор, пока вы не привяжете методы экземпляра вашего элемента, как обработчики событий элементов, постоянно находящихся в иерерхии элементов вашего Silverlight приложения. Например, очень часто нужно реагировать на события Application .Current.RootVisual . ! Будте внимательны. Как только вы начинаете использовать элемент, как динамически добавляемый / заменяемый / удаляемый, то вы больше не может (не имеете права) привязывать методы его экземпляра к событиям элементов постоянно находящихся в иерархии приложе...

Silverlight: "Тонкий" баг в TreeView при снятии выделения со всехэлементов.

Silverlight 3.0, TreeView from Toolkit October 2009. Задача: Если снять выделение со всех элементов TreeView, то ранее выделенный элемент опять станет выделенным, если окно Silverlight тут же потеряет фокус а потом получит опять. Решение: Недостаточно просто снять выделение с элемента TreeView, нужно так же снять с него фокус. Вот код, который обходит эту проблему. public static void UnseslectAllTreeViewItems( TreeView treeView) {     //treeView.SetSelectedContainer(null);     var selectedContainer = treeView.GetSelectedContainer();      if (selectedContainer != null )      {          selectedContainer.IsSelected = false ;      }     // Bug resolving     var focusedElement = FocusManager .GetFocusedElement();     if (focusedElement != null   ...

Silverlight: TreeView Unselect All Items (v.2).

Silverlight 3.0, TreeView from Toolkit October 2009. Задача: В элементе TreeView у которого есть выбранный дочерний ItemTreeView сделать так, чтоб не один элемент не был выбран. Простая задача, но что если у вас она не работает! Решение: Есть! Предположим вы используете следующий код: var selectedContainer = VerticalMenuTreeView.GetSelectedContainer(); if (selectedContainer != null) {     selectedContainer.IsSelected = false; } или такой: OrgTreeView.SetSelectedContainer(null); но он не дает никакого результата. Скорее всего вы прибиндили SelectedValue вашего TreeView к какому-то элемненту и забыли в привязке указать Mode=OneWay . Вот правильный XAML: DataContext ="{ Binding SelectedValue , ElementName =OrgTreeView, Mode =OneWay}" А вот XAML приводящий к багу: DataContext ="{ Binding SelectedValue , ElementName =OrgTreeView}" Главное не забудте указать Mode=OneWay  во всех привязках! Когда вы пытаетесь в коде первым или вторым способом снять выделение в дереве,...