DevExpress WPF MVVM入門例子

設置界面(MainWindows.XAML)

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfRobot"
        xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui" xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" xmlns:lcub="http://schemas.arction.com/bindablecharting/ultimate/" xmlns:dxca="http://schemas.devexpress.com/winfx/2008/xaml/carousel" xmlns:dxn="http://schemas.devexpress.com/winfx/2008/xaml/navbar"
        xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
        xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
        xmlns:dxnav="http://schemas.devexpress.com/winfx/2008/xaml/navigation"
        xmlns:lcusb="http://schemas.arction.com/semibindablecharting/ultimate/"
        x:Class="WpfRobot.MainWindow"
        mc:Ignorable="d"
        WindowStyle="SingleBorderWindow" Height="528.8" Width="645.6">
    
    <DockPanel>
         <DockPanel.DataContext>
            <dxmvvm:ViewModelSource Type="local:ViewModel01"></dxmvvm:ViewModelSource>
        </DockPanel.DataContext> 

        <dxn:NavBarControl DockPanel.Dock="Right" Width="231" EachGroupHasSelectedItem="False" Background="#FFEDE7E7" GroupDescription="的方法" AllowSelectItem="False">
            <dxn:NavBarControl.View>
                <dxn:NavigationPaneView GroupDisplayMode="Text" ItemDisplayMode="ImageAndText" Orientation="Vertical" IsExpandButtonVisible="True" IsExpanded="True" ActiveGroupMinHeight="100"  FlowDirection="RightToLeft" ItemForeground="#FF4E3E3E" />
            </dxn:NavBarControl.View>
            <dxn:NavBarGroup x:Name="navBarGroup3" Header="系統設置" DisplayMode="ImageAndText" ImageSource="{dx:DXImage Image=Cancel_32x32.png}" >
                <dxn:NavBarItem x:Name="navBarItem4" >
                    <Button x:Name="mybutton" Content="{Binding Path=Val, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  />
                </dxn:NavBarItem>
                <dxn:NavBarItem x:Name="navBarItem5" >
                    <Button x:Name="mybutton2" Content="dsdsdsd"   Command="{Binding AddCommand}"/>
                </dxn:NavBarItem>            
            </dxn:NavBarGroup>
       </dxn:NavBarControl>
       </DockPanel>
</Window>

注意:

  • 按界面和業務分離的原則,不要在界面後臺代碼(MainWindow.Xaml.cs)中添加業務邏輯代碼。
  • 每個UI標籤都是一個UI對象,每個對象都有一個DataContext用來指定MVVM數據源。
  • 這裏我們指定的就一個類型爲ViewModel01的類。

創建ViewModel類(ViewModel01.cs)

namespace WpfRobot
{
   public class ViewModel01
    {
        public bool IsOK { get; set; }
        public virtual int Val { get; set; } = 100;

        public  void Add()
        {
            Val++;
        }
         public bool CanAdd()
        {
            return Val < 110;
        }
    }
}

注意:

  • 需要綁定的屬性加virtual關鍵詞(so easy,不用寫那一堆INotifyCollectionChanged了)
  • 定義一個Add方法作爲Command
  • 定義是否能執行Add方法的判斷方法CanAdd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章