Необходимо использовать Application.Volatile
в вершине функции:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
Это тогда переоценит каждый раз, когда рабочая книга изменяется (если Ваше вычисление установлено на автоматический).
Основное ограничение заключается в том, что вы теряете все мощные функции WPF: Связывание данных
, ControlTemplates
и DataTemplates
, Infinite размер, масштабирование / вращение, непрозрачность
, вложенные свойства
, и это лишь некоторые из них. Это слишком много, чтобы отказаться! Вам придется запрограммировать эти элементы управления, используя старые утомительные и подверженные ошибкам методы WinForms, и снова разобраться со всеми теми ограничениями, от которых вы избавились много лет назад.
DataGridView
NET Framework 3.5 sp1 имеет DataGrid
, который может выполнять эту работу, и для этого есть несколько сторонних элементов управления, например, от Xceed. Использование сетки на основе WPF позволяет полностью привязать данные, создавать шаблоны и стили внутри сетки, что было бы невозможно, если бы вы использовали WinForms. DataGridView.
PropertyGrid
Причина, по которой WPF не поставляется с PropertyGrid
, заключается в том, что его так легко воссоздать, используя то, что уже дает вам WPF: простой список с правильным оформлением и всего несколько строк кода программной части.
Прелесть использования реализации WPF PropertyGrid
заключается в том, что вы можете использовать шаблоны для представления редактируемых свойств, и, что наиболее важно, вы можете добавлять новые редакторы свойств, просто выражая их в XAML с помощью нескольких привязок. Например, некоторые свойства в одной из наших сеток свойств устанавливаются с помощью ползунков, и для этого потребовалось всего пять строк XAML.
Вот код, иллюстрирующий ключевые концепции реализации PropertyGrid в WPF :
Во-первых, существуют сторонние сетки свойств и сетки данных для WPF, и они обычно поддерживают дополнительные возможности стилизации WPF и более идиоматично вписывается в приложения WPF. Таким образом, вам не нужно возвращаться к WinForms, и, вероятно, не следует этого делать, если сторонние элементы управления или средства управления на самом деле не являются вариантом.
Если вам все же нужно вернуться к WinForms, главное ограничение, о котором следует знать это «правило воздушного пространства»: вы не можете иметь элементы управления WinForms и WPF, перекрывающие друг друга. Плюс, конечно, элементы управления WinForms не могут участвовать в привязке данных WPF, и их придется решать с помощью процедурного кода старой школы, хотя вы можете инкапсулировать их в пользовательские элементы управления, чтобы обойти это. Кроме того, если вы Если вы пытаетесь создать причудливые визуальные эффекты, они могут не работать слишком хорошо с элементами управления WinForms: правило воздушного пространства, вероятно, сильно вас укусит, если вы выполняете преобразования или анимацию в непосредственной близости от элемента управления WinForms. Но для визуально простых приложений они должны работать нормально.
В WPF Toolkit есть элемент управления Datagrid. Также на CodePlex есть сторонний элемент управления PropertyGrid (под очень разрешительной лицензией MS-PL).