2013-08-20 6 views
1

В настоящее время мы находимся в процессе переключения нашего продукта с WinForms на WPF. В настоящий момент мы используем некоторые сторонние элементы управления WinForm, необходимые для нашего приложения. Хотя мы планируем в конечном итоге заменить их версиями WPF, сейчас это невозможно. Мы попытались разместить их в окне wpf внутри элемента управления WindowsFormsHost, и, похоже, это работает нормально. Единственная проблема, с которой мы сталкиваемся, - это передать наши данные с виртуальной машины на эти элементы управления. Мы хотели бы избежать любых изменений кода и изменений в VM только для размещения этих элементов управления. В идеале мы предпочли бы, чтобы VM полностью не осознавала элементы управления, используемые для отображения его данных, поэтому, когда мы изменим версию WPF этих элементов управления, нам нужно только изменить представление. Вот почему мы ищем способ привязать свойство VM к размещенному элементу управления WinForm из XAML. Если это помогает, мы, безусловно, можем жить с тем фактом, что с помощью VM есть только один способ привязки к VM, и мы не против, если привязка работает только один раз, без последующих обновлений от VM, поскольку свойства VM мы обязательны, не меняются. Возможно, у кого-то есть идеи, как мы можем это сделать?Свойство управления привязкой winform в XAML

ответ

2

Не уверен, что, если есть лучший способ, но вот одна идея:

Wrap элемент управления WinForm/управления WindowsFormsHost в элемент управления обертку (наследуется от Control или использовать UserControl, независимо лучше для вас).

На этой обертке вы можете добавить свойства зависимостей, которые вы хотите связать с вашей виртуальной машиной.

Внутри кода обертки вы можете добавить шаблон, необходимый для распространения изменений взад и вперед между вашими зависимыми свойствами оболочки и вашими свойствами winform.

Это скрывает грязь под ковром и предоставляет красивый WPF-фасад, с которым вы можете привязываться, как обычно, без изменения вашей виртуальной машины.

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

+0

+1, хотя некоторые образцы кода сделают это лучшим ответом. –

Смежные вопросы