Devexpress MVVM OpenFileDialogService&&SaveFileDialogService
来源:互联网 发布:wow7.0装备数据库 编辑:程序博客网 时间:2024/06/07 14:45
废话不多说直接上代码
视图:
<UserControl xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon" x:Class="WpfApp1.Views.MainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" xmlns:ViewModels="clr-namespace:WpfApp1.ViewModels" mc:Ignorable="d" DataContext="{dxmvvm:ViewModelSource Type=ViewModels:MainViewModel}" d:DesignHeight="300" d:DesignWidth="800"> <dxmvvm:Interaction.Behaviors> <dxmvvm:OpenFileDialogService Title="{Binding Title}" /> <dxmvvm:SaveFileDialogService Title="{Binding Title}" /> </dxmvvm:Interaction.Behaviors> <DockPanel> <dxr:RibbonControl DockPanel.Dock="Top" ShowApplicationButton="False" ToolbarShowMode="Hide" RibbonTitleBarVisibility="Collapsed"> <dxr:RibbonDefaultPageCategory Caption="Default Category"> <dxr:RibbonPage Caption="File"> <dxr:RibbonPageGroup Caption="Actions"> <dxb:BarButtonItem Content="Open" Command="{Binding OpenCommand}" Glyph="{dx:DXImage Image=Open_16x16.png}" LargeGlyph="{dx:DXImage Image=Open2_32x32.png}" RibbonStyle="Large" /> <dxb:BarButtonItem Content="Save" Command="{Binding SaveCommand}" Glyph="{dx:DXImage Image=Save_16x16.png}" LargeGlyph="{dx:DXImage Image=Save_32x32.png}" RibbonStyle="Large" /> </dxr:RibbonPageGroup> <dxr:RibbonPageGroup Caption="Settings"> <dxb:BarEditItem Content="Title" EditValue="{Binding Title}"> <dxb:BarEditItem.EditSettings> <dxe:TextEditSettings /> </dxb:BarEditItem.EditSettings> </dxb:BarEditItem> <dxb:BarEditItem Content="Filter" EditValue="{Binding Filter}"> <dxb:BarEditItem.EditSettings> <dxe:TextEditSettings /> </dxb:BarEditItem.EditSettings> </dxb:BarEditItem> <dxb:BarEditItem Content="Filter Index" EditValue="{Binding FilterIndex}"> <dxb:BarEditItem.EditSettings> <dxe:TextEditSettings /> </dxb:BarEditItem.EditSettings> </dxb:BarEditItem> </dxr:RibbonPageGroup> </dxr:RibbonPage> </dxr:RibbonDefaultPageCategory> </dxr:RibbonControl> <dxr:RibbonStatusBarControl DockPanel.Dock="Bottom"> <dxr:RibbonStatusBarControl.RightItems> <dxb:BarStaticItem Content="{Binding DialogResult}"> <dxb:BarStaticItem.ContentTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="Dialog Result: " /> <TextBlock Text="{Binding}" /> </StackPanel> </DataTemplate> </dxb:BarStaticItem.ContentTemplate> </dxb:BarStaticItem> </dxr:RibbonStatusBarControl.RightItems> </dxr:RibbonStatusBarControl> <TextBox Text="{Binding FileBody, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AcceptsReturn="True" TextWrapping="Wrap" /> </DockPanel></UserControl>
对应模型视图:
using System;using DevExpress.Mvvm.DataAnnotations;using DevExpress.Mvvm;using DevExpress.Mvvm.POCO;using System.Linq;using System.IO;namespace WpfApp1.ViewModels{ [POCOViewModel] public class MainViewModel { #region Common properties public virtual string Filter { get; set; } public virtual int FilterIndex { get; set; } public virtual string Title { get; set; } public virtual bool DialogResult { get; protected set; } public virtual string ResultFileName { get; protected set; } public virtual string FileBody { get; set; } #endregion #region SaveFileDialogService specific properties public virtual string DefaultExt { get; set; } public virtual string DefaultFileName { get; set; } public virtual bool OverwritePrompt { get; set; } #endregion protected ISaveFileDialogService SaveFileDialogService { get { return this.GetService<ISaveFileDialogService>(); } } protected IOpenFileDialogService OpenFileDialogService { get { return this.GetService<IOpenFileDialogService>(); } } public MainViewModel() { Filter = "Text Files (.txt)|*.txt|All Files (*.*)|*.*"; FilterIndex = 1; Title = "Custom Dialog Title"; DefaultExt = "txt"; DefaultFileName = "Document1"; OverwritePrompt = true; } public void Open() { OpenFileDialogService.Filter = Filter; OpenFileDialogService.FilterIndex = FilterIndex; DialogResult = OpenFileDialogService.ShowDialog(); if (!DialogResult) { ResultFileName = string.Empty; } else { IFileInfo file = OpenFileDialogService.Files.First(); ResultFileName = file.Name; using (var stream = file.OpenText()) { FileBody = stream.ReadToEnd(); } } } public void Save() { SaveFileDialogService.DefaultExt = DefaultExt; SaveFileDialogService.DefaultFileName = DefaultFileName; SaveFileDialogService.Filter = Filter; SaveFileDialogService.FilterIndex = FilterIndex; DialogResult = SaveFileDialogService.ShowDialog(); if (!DialogResult) { ResultFileName = string.Empty; } else { using (var stream = new StreamWriter(SaveFileDialogService.OpenFile())) { stream.Write(FileBody); } } } }}
特别提醒,在Devexpress MVVM模式中。ModelView中的方法可在Model中直接以命令的形式绑定。比如OPEN,对应绑定的就是OpenCommmand,Debug,对应的就是DebugCommand.
0 0
- Devexpress MVVM OpenFileDialogService&&SaveFileDialogService
- Devexpress MVVM NotificationService
- 【WPF】【DevExpress】TileLayoutControl+MVVM示例
- 如何使用 DevExpress MVVM 架构构建具有 DOCK 能力的 MVVM 程序?
- devexpress
- DevExpress
- DevExpress
- DevExpress
- DevExpress
- devexpress
- DevExpress
- devexpress
- DevExpress
- DevExpress
- 【WPF】【DevExpress】定制TreeListControl中显示列的样式+MVVM架构
- MVVM
- MVVM
- MVVM
- jquery easyui中datagrid数据传递和返回的格式
- nginx+php+mysql 搭建完整web服务器
- ajax学习笔记
- POJ3614_Sunscreen_贪心 && stl的优先级队列
- 1067
- Devexpress MVVM OpenFileDialogService&&SaveFileDialogService
- 进程同步与互斥笔记
- 黑客学习网,攻击技术学习,PDF,视频
- TIANKENG’s restaurant 【区间覆盖】
- Lodash中十个常用的工具函数
- 数字签名算法_DSA
- 机器学习之多类别问题
- 【python数据挖掘课程】十一.Pandas、Matplotlib结合SQL语句可视化分析
- 227. Basic Calculator II