WPF 4.0. Что нового? Часть 5
Последняя статья из серии что нового в WPF. Предыдущие версии: 1, 2, 3, 4. В данной части будет небольшая солянка из еще найденных и откопанных нововведений. Предполагаю, что можно найти и другие, но уже и эти не совсем нужны в продакшене, потому, пожалуй, пора остановится. Xbap – Full Trust В более ранних версиях, если вы попытаетесь установить Full Trust Xbap, то увидите ошибку “Trust not Granted”. Решений было несколько, одно из которых было – подпись приложения сертификатом и установка сертификата в локальное хранилище пользователя, но тут терялась прелесть технологии ClickOnce. Теперь же пользователю будет предложен диалог выбора – запускать приложение или нет. Updated File Dialogs В предыдущих версиях окна выбора файлов, директорий и т.п. выглядели в стиле WinXP, теперь же окна полностью соответствуют ОС, в которой запущено приложение, а точнее диалоги выбора файлов в Windows 7 выглядят как в Windows 7. Key\Gesture Binding Появилась возможность биндить Key и Modifiers в KeyBinding. Теперь можно создать свою DelegateCommand со свойствами public Key GestureKey { get; set; } public ModifierKeys GestureModifier { get; set; } public MouseAction MouseGesture { get; set; } Инициализировать команду следующим образом public ICommand ExitCommand { get { if (exitCommand == null) { exitCommand = new DelegateCommand(Exit); exitCommand.GestureKey = Key.X; exitCommand.GestureModifier = ModifierKeys.Control; exitCommand.MouseGesture = MouseAction.LeftDoubleClick; } return exitCommand; } } А дальше забиндить клавиши: <Window.InputBindings> <KeyBinding Command="{Binding ExitCommand}" Key="{Binding ExitCommand.GestureKey}" Modifiers="{Binding ExitCommand.GestureModifier}"/> </Window.InputBindings> Без необходимости объявления ресурсов. Script Interop in Xbap Полезная функциональность для тех, кто встраивает Xbap в свои веб-странички. Кстати, а такие люди вообще бывают? Вообще, конечно, ситуация очень редкая, чтобы xbap хостился внутри html страницы, но все же возможная для приложений внутри локальной сети. В случае, если у нас на странице будет объявлена javascript функция ReportDate: function ReportDate(dateTime) { date = new Date(dateTime); var dateBox = document.getElementById("displayDate"); dateBox.value = date.getFullYear(); } То теперь при помощи класса BrowserInteropHelper мы сможем вызвать ее из нашего xbap приложения очень просто: dynamic script = BrowserInteropHelper.HostScript; script.ReportDate(DateTime.Now); Полноценный пример можно скачать и разобрать здесь - New WPF Features: Script Interop in Xbap XAML: Node Loop flexibility Как известно в .NET 4 появилась отдельная библиотека System.Xaml, позволяющая нам обрабатывать Xaml разметку, считывать и превращать в граф объектов. Раньше у нас была возможность так же работать с Xaml разметкой при помощи XamlReader и XamlWriter, но все что они нам давали – это считывать и записывать Xaml, но не предоставляли нам возможность работать с ним. Теперь же набор классов для работы с Xaml пополнился, например, XamlXmlReader, который позволяет пробегаться еще и по элементам xaml дерева. Пример можно посмотреть здесь - Node Loop flexibility, в данном примере у считываемого Xaml файла заменяют родительский элемент Window на Page. Автор: Денис Гладких |
Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.