C ++ / CLI, XAML и обработчики событий

Я новичок в мире Windows, и мне кажется, что я заблудился над проблемой. Мне бы хотелось получить совет от людей, имеющих опыт работы с C ++ / CLI, WPF и XAML.

У меня есть код win32, и мне нужно запустить графический интерфейс WPF. Я нашел этот пример пошагового руководства для MS, в котором используется C ++ / CLI . Я адаптировал его для своих целей, и он отлично работает.

Затем я хотел избавиться от программных материалов WPF и использовать вместо них XAML. Это сделано для того, чтобы я мог передать XAML дизайнеру и выйти из цикла проектирования пользовательского интерфейса, к которому я, безусловно, не принадлежу. Прочитав раздел «Проекты взаимодействия WPF» в Взаимодействие WPF и Win32 в MSDN , я решил использовать параметр XamlReader :: Load и загружать некомпилированный XAML во время выполнения. Моя разметка XAML - это Canvas UIElement , который я программно добавляю как дочерний элемент моего корневого Grid элемента C ++ / CLI. Это прекрасно работает.

Теперь я хочу добавить обработчик событий к элементам управления в XAML. Здесь у меня начались проблемы. Я уверен, что мое незнание мира Windows составляет 95% того, что меня здесь убивает.

Я начал со страницы Роба Рельеа, на которой были описаны различные параметры XAML и обработчиков событий .

] Я решил попробовать скомпилировать XAML как C # DLL. По сути, это тот же XAML, что и в случае Load во время выполнения. Я создаю экземпляр объекта и программно добавляю его как дочерний элемент, как и раньше. Но ... я получаю только черное окно. Никаких исключений тоже не возникает. Я сбит с толку.

Мой вопрос, я вообще иду по правильному пути? На странице XAML-and-event-handlers говорится, что вы можете использовать обработчики событий, определенные в некомпилированном XAML в .Net Framework 4. Должен ли я укусить пулю и просто перейти на VS 2010 (сейчас я использую VS 2008), чтобы я мог использовать .Net Framework 4 и просто придерживаться некомпилированного XAML? Есть ли какие-то проблемы с тем, чтобы так поступать?

Или, если вы действительно считаете, что скомпилированная C # DLL - разумный путь, есть ли у вас какие-нибудь идеи, как я могу отладить возникающие у меня проблемы?

Или есть лучший и совершенно другой подход?

Заранее благодарим за совет.

Polly

8
задан svick 13 August 2011 в 19:45
поделиться