做了五年的winform项目,进入wpf领域。
简单的页面:
<Button Grid.Column="0" x:Name="fishTitle" Content="Title" Width="40" Height="30" Command="{Binding Confirm}"/>
<TextBox Grid.Column="1" x:Name="fishTextbox" Text="{Binding getfish,Mode=TwoWay}" Width="158" Height="40" HorizontalAlignment="Left" Margin="0,10" />
<ListView Name="demolistview" Grid.Row="1" Grid.Column="1" Margin="5,10,5,0"
HorizontalAlignment="Stretch" ItemsSource="{Binding}" >
<ListView.View>
<GridView>
<GridViewColumn Header="fish" />
<GridViewColumn Header="pidan"/>
<GridViewColumn Header="kele" />
</GridView>
</ListView.View>
</ListView>
一个button 一个textbox 还有一个listview,button 可以这么写
<Button Grid.Column="0" x:Name="fishTitle" Content="Title" Width="40" Height="30" Command="{Binding Confirm}" Click="fishTitle_Click"/>
既然想写这样的模式那就换成Command="{Binding Confirm}" 这种方式吧,
新建了一个vm类
public class MainWindowVM:INotifyPropertyChanged
public ICommand Confirm
{
get
{
if (_confirm == null)
{
_confirm = new DelegateCommand((p) =>
{
if (fish == "123")
{
Debug.WriteLine("go go go!");
return;
}
},null
);
}
return _confirm;
}
set
{
_confirm = value;
}
}
点击事件,就直接调用方法:
public class DelegateCommand:ICommand 是另外一个类,继承自icommand,处理其中关系,代码很简单,看了代码基本就差不多了,只是和以往的方式有些不同,异曲同工吧!
看得懂就看得懂,不懂的话那也没办法!呵呵
还有 就是tm怎么上传源代码,我勒个去
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
namespace TryDemo
{
public class DelegateCommand:ICommand
{
private Func<object, bool> _canExecuteFunc;
private Action<object> _executeAction;
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public DelegateCommand(Action<object> executeAction)
{
_executeAction = executeAction;
}
public DelegateCommand(Action<object> executeAction, Func<object, bool> canExecuteFunc)
: this(executeAction)
{
_canExecuteFunc = canExecuteFunc;
}
public bool CanExecute(object parameter)
{
return _canExecuteFunc==null?true:_canExecuteFunc(parameter);
}
public void Execute(object parameter)
{
if (_executeAction != null)
_executeAction(parameter);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Input;
using System.Windows.Controls;
using System.Diagnostics;
namespace TryDemo
{
public class MainWindowVM:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string fish = "fish";
public string getfish
{
get
{
return fish;
}
set
{
if (fish != value)
{
fish = value;
OnNotifyPropertyChange("getfish");
}
}
}
private List<MainWindowVM> _sendList = new List<MainWindowVM>();
public List<MainWindowVM> SendList
{
get { return _sendList; }
set
{
_sendList = value;
}
}
private ICommand _confirm=null;
public ICommand Confirm
{
get
{
if (_confirm == null)
{
_confirm = new DelegateCommand((p) =>
{
if (fish == "123")
{
Debug.WriteLine("go go go!");
return;
}
},null
);
}
return _confirm;
}
set
{
_confirm = value;
}
}
public void OnNotifyPropertyChange(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
<Window x:Class="TryDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ControlStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" x:Name="fishTitle" Content="Title" Width="40" Height="30" Command="{Binding Confirm}" Click="fishTitle_Click"/>
<TextBox Grid.Column="1" x:Name="fishTextbox" Text="{Binding getfish,Mode=TwoWay}" Width="158" Height="40" HorizontalAlignment="Left" Margin="0,10" />
<ListView Name="demolistview" Grid.Row="1" Grid.Column="1" Margin="5,10,5,0"
HorizontalAlignment="Stretch" ItemsSource="{Binding}" >
<ListView.View>
<GridView>
<GridViewColumn Header="fish" />
<GridViewColumn Header="pidan"/>
<GridViewColumn Header="kele" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
}