问题描述
我写了一个程序与MVVM(C#)和XAML使用Caliburn.Micro库,我怎么能:
- 获得全部所选的项目(不仅是一个项目)?
- 选择得到改变事件?
- 排序点击标题列的项目?
任何帮助将是AP preciated。
GUI code:视图\\ MainView.xaml
<窗口x:类=ListBox_CaliburnMicro.MainView
的xmlns =http://schemas.microsoft.com/winfx/2006/xaml/$p$psentation
的xmlns:X =http://schemas.microsoft.com/winfx/2006/xaml
的xmlns:CAL =CLR的命名空间:Caliburn.Micro;装配= Caliburn.Micro
的xmlns:I =CLR的命名空间:System.Windows.Interactivity;装配= System.Windows.Interactivity
的xmlns:VM =CLR的命名空间:ListBox_CaliburnMicro
WindowStartupLocation =中心屏幕
标题=主窗口HEIGHT =300WIDTH =600>
<网格和GT;
< Grid.DataContext>
< VM:MainViewModel />
< /Grid.DataContext> < Grid.ColumnDefinitions>
< ColumnDefinition WIDTH =153 */>
< /Grid.ColumnDefinitions> <按钮命令={结合HelloCommand}CONTENT =你好......的HorizontalAlignment =左保证金=10,36,0,0VerticalAlignment =评出的WIDTH =75工具提示=测试背景=白前景=黑HEIGHT =22/>
<按钮内容=add命令={结合AddCommand}的HorizontalAlignment =左保证金=10,8,0,0VerticalAlignment =评出的WIDTH =75工具提示=添加列表项的结束背景=白前景=黑HEIGHT =22/>
<按钮内容=删除命令={结合的DeleteCommand}的HorizontalAlignment =左保证金=96,8,0,0VerticalAlignment =评出的WIDTH =75工具提示=删除从列表中的第一个项目背景=白前景=黑HEIGHT =22/>
<按钮内容=更新命令={结合的UpdateCommand}的HorizontalAlignment =左保证金=184,8,0,0VerticalAlignment =评出的WIDTH =75工具提示=更新列表,从第一个项目背景=白前景=黑HEIGHT =22/>
<按钮内容=GetSelectedItem命令={结合GetSelectedItemCommand}的HorizontalAlignment =左保证金=271,8,0,0VerticalAlignment =评出的WIDTH =95工具提示=获得选择从列表项背景=白前景=黑HEIGHT =22/>
<按钮内容=的GetItem:命令={结合GetItemXCommand}的HorizontalAlignment =左保证金=377,8,0,0VerticalAlignment =评出的WIDTH =75工具提示=拿到项目X,从名单背景=白前景=黑HEIGHT =22/> <文本框X:NAME =ItemX文本=0的HorizontalAlignment =左身高=20保证金=455,10,0,0TextWrapping =包装VerticalAlignment =评出的WIDTH =70 /> < TextBlock的X:名称=OuputText的HorizontalAlignment =左身高=20保证金=165,40,0,0TextWrapping =自动换行文本=VerticalAlignment =评出的WIDTH =415前景=#FFFF0909/>
<标签内容=输出的HorizontalAlignment =左身高=28保证金=100,35,0,0VerticalAlignment =评出的WIDTH =55/> < ListView控件Grid.Column =1×:NAME =FileListView的SelectionMode =扩展的SelectedItem ={结合的SelectedItem}的SelectedIndex ={结合的SelectedIndex}的ItemsSource ={绑定路径=文件}VerticalAlignment = 拉伸HorizontalContentAlignment =拉伸保证金=10,65,10,10前景=黑背景=#FFE6EEF7> < ListView.View>
<&GridView的GT;
< GridViewColumn标题=状态WIDTH =自动
DisplayMemberBinding ={结合时间filestatus}/>
< GridViewColumn标题=名称WIDTH =自动
DisplayMemberBinding ={结合文件名}/>
< GridViewColumn标题=大小WIDTH =自动
DisplayMemberBinding ={结合文件大小}/>
< GridViewColumn标题=系统类型WIDTH =自动
DisplayMemberBinding ={绑定文件类型}/>
< GridViewColumn标题=邮件计数WIDTH =自动
DisplayMemberBinding ={结合FileEmailCount}/>
< GridViewColumn标题=信息计数WIDTH =自动
DisplayMemberBinding ={结合FileInfoCount}/>
< / GridView的>
< /ListView.View> < /&的ListView GT; < /网格和GT;
< /窗GT;
视图模型code:的ViewModels \\ MainViewModel.cs
使用Caliburn.Micro;
使用ListBox_CaliburnMicro.Model;
使用ListBox_CaliburnMicro.ViewModels;
使用系统;
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
使用System.ComponentModel;
使用System.Linq的;
使用System.Text;
使用System.Threading.Tasks;
使用System.Windows.Input;命名空间ListBox_CaliburnMicro
{
公共类MainViewModel:屏幕,INotifyPropertyChanged的
{
公共MainViewModel()
{
FillDataFile(); HelloCommand =新RelayCommand(DoHello,CanDoHello);
AddCommand =新RelayCommand(的doAdd,CanDoAdd);
DeleteCommand会=新RelayCommand(DoDelete,CanDoDelete);
更新命令=新RelayCommand(DoUpdate,CanDoUpdate);
GetSelectedItemCommand =新RelayCommand(DoGetSelectedItem,CanDoGetSelectedItem);
GetItemXCommand =新RelayCommand(DoGetGetItemX,CanDoGetItemX);
} #区域文件的ListView
私人的ObservableCollection<文件> _Files;
公众的ObservableCollection<文件>档
{
{返回_Files; }
组
{
_Files =价值;
OnPropertyChanged(文件);
}
} 私人无效FillDataFile()
{ _Files =新的ObservableCollection<文件>();
的for(int i = 0; I< 100000;我++)
{
字符串则strName =的String.Format({0},我);
_Files.Add(新文件(){时间filestatus =身份,文件名=则strName,文件大小= I,文件类型=类型,FileEmailCount =EMAIL_COUNT,FileInfoCount =info_count});
}
} 公共事件PropertyChangedEventHandler的PropertyChanged;
公共无效OnPropertyChanged(字符串propertyName的)
{
如果(的PropertyChanged!= NULL)
的PropertyChanged(这一点,新PropertyChangedEventArgs(propertyName的));
}
#endregion #区域OuputText文本框
私人字符串_OuputText = - ;
公共字符串OuputText
{
得到
{
返回_OuputText;
}
组
{
_OuputText =价值;
OnPropertyChanged(OuputText);
}
}
#endregion #区域ItemX文本框
私人字符串_ItemX =0;
公共字符串ItemX
{
得到
{
返回_ItemX;
}
组
{
INT nItem = 0;
如果(Int32.TryParse(价值,走出nItem))
{
如果(nItem&GT = _Files.Count || nItem℃,)
返回;
} _ItemX =价值;
OnPropertyChanged(ItemX);
}
}
#endregion #区域命令按钮 #区域你好按钮
公共RelayCommand HelloCommand {搞定;组; }
私人布尔CanDoHello(obj对象)
{
返回true;
}
私人无效DoHello(obj对象)
{
System.Windows.MessageBox.Show(DoHello);
}
#endregion #REGION添加按钮
公共RelayCommand AddCommand {搞定;组; }
私人布尔CanDoAdd(obj对象)
{
返回true;
}
私人无效的doAdd(obj对象)
{
字符串则strName =的String.Format({0},_Files.Count + 1);
_Files.Add(新文件(){时间filestatus =身份,文件名=则strName,文件大小= _Files.Count,文件类型=类型,FileEmailCount =EMAIL_COUNT,FileInfoCount =info_count});
}
#endregion #REGION删除按钮
公共RelayCommand的DeleteCommand {搞定;组; }
私人布尔CanDoDelete(obj对象)
{
如果(_Files.Count大于0)
返回true; 返回false;
}
私人无效DoDelete(obj对象)
{
如果(_Files.Count大于0)
{
如果(的SelectedItem!= NULL)
_Files.Remove(的SelectedItem);
其他
_Files.RemoveAt(0);
}
}
#endregion #区域更新按钮
公共RelayCommand的UpdateCommand {搞定;组; }
私人布尔CanDoUpdate(obj对象)
{
如果(_Files.Count大于0)
返回true; 返回false;
}
私人无效DoUpdate(obj对象)
{
// VAR VVV = SelectedItems;
如果(_Files.Count大于0)
{
如果(的SelectedItem!= NULL)
SelectedItem.FileName =更新...; //改变文件名域
其他
_Files [0] .FileName =更新...;
} //列表<文件> FilesSelect = _Files.Where(P => p.FileID == _Files [0] .FileID).ToList();
}
#endregion #区域GetSelectedItem按钮
公共RelayCommand GetSelectedItemCommand {搞定;组; }
私人布尔CanDoGetSelectedItem(obj对象)
{
如果(_Files.Count大于0)
返回true; 返回false;
} 公共文件的SelectedItem {搞定;组; }
公众诠释的SelectedIndex {搞定;组; }
私人无效DoGetSelectedItem(obj对象)
{
如果(_Files.Count大于0&放大器;&放大器;!的SelectedItem =空)
{
VAR selected_file =的SelectedItem; OuputText =的String.Format(一个选择的索引{0} - > [{1}],SelectedIndex的,selected_file.FileID);
}
}
#endregion #区域GetItemX按钮
公共RelayCommand GetItemXCommand {搞定;组; }
私人布尔CanDoGetItemX(obj对象)
{
如果(_Files.Count大于0)
返回true; 返回false;
}
私人无效DoGetGetItemX(obj对象)
{
INT nItem = 0;
如果(Int32.TryParse(ItemX,出nItem))
{
如果(nItem< _Files.Count)
{
OuputText =的String.Format(选择指数{0} - > [{1}],nItem,_Files [nItem] .FileID);
}
}
其他
OuputText = - ;
}
#endregion #endregion
}
}
ICommand的code:的ViewModels \\ RelayCommand.cs
使用系统;
使用System.Windows.Input;命名空间ListBox_CaliburnMicro.ViewModels
{
公共类RelayCommand:ICommand的
{
#区域场
只读动作<对象> _执行;
只读predicate<对象> _canExecute;
#endregion #区域构造
公共RelayCommand(动作<对象>执行):这个(执行,NULL)
{ } 公共RelayCommand(动作<对象>执行,predicate<对象> canExecute)
{
如果(执行== NULL)
抛出新的ArgumentException(执行); _execute =执行;
_canExecute = canExecute;
}
#endregion #区域成员
公共BOOL CanExecute(对象参数)
{
return _canExecute == NULL?真:_canExecute(参数);
} 公共事件的EventHandler CanExecuteChanged
{
添加{CommandManager.RequerySuggested + =价值; }
除去{CommandManager.RequerySuggested - =价值; }
} 公共无效执行(对象参数)
{
_execute(参数);
}
#endregion #区域加薪
公共无效RaiseCanExecuteChanged()
{
/ *如果(CanExecuteChanged!= NULL)
CanExecuteChanged(这一点,EventArgs.Empty); * /
}
#endregion
}
}
示范code:型号\\ File.cs
使用系统;
使用System.ComponentModel;命名空间ListBox_CaliburnMicro.Model
{
公共类文件:INotifyPropertyChanged的
{
私人的Guid _FileID;
公众的Guid写到FileID
{
得到
{
返回_FileID;
}
组
{
_FileID =价值;
OnPropertyChanged(写到FileID);
}
} 公共事件PropertyChangedEventHandler的PropertyChanged;
公共无效OnPropertyChanged(字符串propertyName的)
{
如果(的PropertyChanged!= NULL)
的PropertyChanged(这一点,新PropertyChangedEventArgs(propertyName的));
} 私人字符串_FileStatus;
公共字符串时间filestatus
{
得到
{
返回_FileStatus;
}
组
{
_FileStatus =价值;
OnPropertyChanged(时间filestatus);
}
} 私人字符串_filename;
公共字符串文件名
{
得到
{
返回_filename;
}
组
{
_filename =价值;
OnPropertyChanged(文件名);
}
} 公众诠释_FileSize;
公众诠释文件大小
{
得到
{
返回_FileSize;
}
组
{
_FileSize =价值;
OnPropertyChanged(文件大小);
}
} 私人字符串_FileType;
公共字符串的文件类型
{
得到
{
返回_FileType;
}
组
{
_FileType =价值;
OnPropertyChanged(文件类型);
}
} 私人字符串_FileEmailCount;
公共字符串FileEmailCount
{
得到
{
返回_FileEmailCount;
}
组
{
_FileEmailCount =价值;
OnPropertyChanged(FileEmailCount);
}
} 私人字符串_FileInfoCount;
公共字符串FileInfoCount
{
得到
{
返回_FileInfoCount;
}
组
{
_FileInfoCount =价值;
OnPropertyChanged(FileInfoCount);
}
} 公共文件()
{
写到FileID = Guid.NewGuid();
}
公共文件(字符串S1 =,字符串s2 =,INT S3 = 0,串S4 =,串S5 =,字符串S6 =)
{
写到FileID = Guid.NewGuid(); 时间filestatus = S1;
文件名= S2;
文件大小= S3;
FILETYPE = S4;
FileEmailCount = S5;
FileInfoCount = S6;
}
}
}
您必须对这些事件挂钩到一个命令,然后在视图模型处理它们。
不使用Caliburn.Micro但也应该是EventToCommand绑定的概念。我快速搜索发现下面的链接。
http://www.mindscapehq.com/blog/index.php/2012/01/24/caliburn-micro-part-3-more-about-events-and-parameters/
如果我没有得到你的问题正确,请让我知道...
心连心
I wrote a program with MVVM (C#) and XAML using Caliburn.Micro library, how can i:
- get all selected items (not only one item)?
- get selected change event?
- sort items by clicking header columns?
Any help would be appreciated.
GUI code: Views \ MainView.xaml
<Window x:Class="ListBox_CaliburnMicro.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:vm="clr-namespace:ListBox_CaliburnMicro"
WindowStartupLocation="CenterScreen"
Title="MainWindow" Height="300" Width="600">
<Grid>
<Grid.DataContext>
<vm:MainViewModel/>
</Grid.DataContext>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="153*"/>
</Grid.ColumnDefinitions>
<Button Command="{Binding HelloCommand}" Content="Hello ..." HorizontalAlignment="Left" Margin="10,36,0,0" VerticalAlignment="Top" Width="75" ToolTip="Test" Background="White" Foreground="Black" Height="22" />
<Button Content="Add" Command="{Binding AddCommand}" HorizontalAlignment="Left" Margin="10,8,0,0" VerticalAlignment="Top" Width="75" ToolTip="Add item end of list" Background="White" Foreground="Black" Height="22"/>
<Button Content="Delete" Command="{Binding DeleteCommand}" HorizontalAlignment="Left" Margin="96,8,0,0" VerticalAlignment="Top" Width="75" ToolTip="Delete first item from list" Background="White" Foreground="Black" Height="22"/>
<Button Content="Update" Command="{Binding UpdateCommand}" HorizontalAlignment="Left" Margin="184,8,0,0" VerticalAlignment="Top" Width="75" ToolTip="Update first item from list" Background="White" Foreground="Black" Height="22"/>
<Button Content="GetSelectedItem" Command="{Binding GetSelectedItemCommand}" HorizontalAlignment="Left" Margin="271,8,0,0" VerticalAlignment="Top" Width="95" ToolTip="get selected item from list" Background="White" Foreground="Black" Height="22"/>
<Button Content="GetItem:" Command="{Binding GetItemXCommand}" HorizontalAlignment="Left" Margin="377,8,0,0" VerticalAlignment="Top" Width="75" ToolTip="get item x, from list" Background="White" Foreground="Black" Height="22"/>
<TextBox x:Name="ItemX" Text="0" HorizontalAlignment="Left" Height="20" Margin="455,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="70"/>
<TextBlock x:Name="OuputText" HorizontalAlignment="Left" Height="20" Margin="165,40,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="415" Foreground="#FFFF0909"/>
<Label Content="Output:" HorizontalAlignment="Left" Height="28" Margin="100,35,0,0" VerticalAlignment="Top" Width="55"/>
<ListView Grid.Column="1" x:Name="FileListView" SelectionMode="Extended" SelectedItem="{Binding SelectedItem}" SelectedIndex="{Binding SelectedIndex}" ItemsSource="{Binding Path=Files}" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" Margin="10,65,10,10" Foreground="Black" Background="#FFE6EEF7">
<ListView.View>
<GridView>
<GridViewColumn Header="Status" Width="Auto"
DisplayMemberBinding="{Binding FileStatus}"/>
<GridViewColumn Header="Name" Width="Auto"
DisplayMemberBinding="{Binding FileName}"/>
<GridViewColumn Header="Size" Width="Auto"
DisplayMemberBinding="{Binding FileSize}"/>
<GridViewColumn Header="System Type" Width="Auto"
DisplayMemberBinding="{Binding FileType}"/>
<GridViewColumn Header="Email Count" Width="Auto"
DisplayMemberBinding="{Binding FileEmailCount}"/>
<GridViewColumn Header="Info Count" Width="Auto"
DisplayMemberBinding="{Binding FileInfoCount}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
ViewModel code: ViewModels \ MainViewModel.cs
using Caliburn.Micro;
using ListBox_CaliburnMicro.Model;
using ListBox_CaliburnMicro.ViewModels;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace ListBox_CaliburnMicro
{
public class MainViewModel : Screen, INotifyPropertyChanged
{
public MainViewModel()
{
FillDataFile();
HelloCommand = new RelayCommand(DoHello, CanDoHello);
AddCommand = new RelayCommand(DoAdd, CanDoAdd);
DeleteCommand = new RelayCommand(DoDelete, CanDoDelete);
UpdateCommand = new RelayCommand(DoUpdate, CanDoUpdate);
GetSelectedItemCommand = new RelayCommand(DoGetSelectedItem, CanDoGetSelectedItem);
GetItemXCommand = new RelayCommand(DoGetGetItemX, CanDoGetItemX);
}
#region File listView
private ObservableCollection<File> _Files;
public ObservableCollection<File> Files
{
get { return _Files; }
set
{
_Files = value;
OnPropertyChanged("Files");
}
}
private void FillDataFile()
{
_Files = new ObservableCollection<File>();
for (int i = 0; i < 100000; i++)
{
string strName = string.Format("{0}", i);
_Files.Add(new File() { FileStatus = "status", FileName = strName, FileSize = i, FileType = "type", FileEmailCount = "email_count", FileInfoCount = "info_count" });
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
#region OuputText textbox
private string _OuputText = "-";
public string OuputText
{
get
{
return _OuputText;
}
set
{
_OuputText = value;
OnPropertyChanged("OuputText");
}
}
#endregion
#region ItemX textbox
private string _ItemX = "0";
public string ItemX
{
get
{
return _ItemX;
}
set
{
int nItem = 0;
if (Int32.TryParse(value, out nItem))
{
if (nItem >= _Files.Count || nItem < 0)
return;
}
_ItemX = value;
OnPropertyChanged("ItemX");
}
}
#endregion
#region command button
#region Hello button
public RelayCommand HelloCommand { get; set; }
private bool CanDoHello(object obj)
{
return true;
}
private void DoHello(object obj)
{
System.Windows.MessageBox.Show("DoHello");
}
#endregion
#region Add button
public RelayCommand AddCommand { get; set; }
private bool CanDoAdd(object obj)
{
return true;
}
private void DoAdd(object obj)
{
string strName = string.Format("{0}", _Files.Count + 1);
_Files.Add(new File() { FileStatus = "status", FileName = strName, FileSize = _Files.Count, FileType = "type", FileEmailCount = "email_count", FileInfoCount = "info_count" });
}
#endregion
#region Delete button
public RelayCommand DeleteCommand { get; set; }
private bool CanDoDelete(object obj)
{
if (_Files.Count > 0)
return true;
return false;
}
private void DoDelete(object obj)
{
if (_Files.Count > 0)
{
if (SelectedItem != null)
_Files.Remove(SelectedItem);
else
_Files.RemoveAt(0);
}
}
#endregion
#region Update button
public RelayCommand UpdateCommand { get; set; }
private bool CanDoUpdate(object obj)
{
if (_Files.Count > 0)
return true;
return false;
}
private void DoUpdate(object obj)
{
// var vvv= SelectedItems;
if (_Files.Count > 0)
{
if (SelectedItem != null)
SelectedItem.FileName = "Updated ..."; // change FileName field
else
_Files[0].FileName = "Updated ...";
}
// List<File> FilesSelect = _Files.Where(p => p.FileID == _Files[0].FileID).ToList();
}
#endregion
#region GetSelectedItem button
public RelayCommand GetSelectedItemCommand { get; set; }
private bool CanDoGetSelectedItem(object obj)
{
if (_Files.Count > 0)
return true;
return false;
}
public File SelectedItem { get; set; }
public int SelectedIndex { get; set; }
private void DoGetSelectedItem(object obj)
{
if (_Files.Count > 0 && SelectedItem != null)
{
var selected_file = SelectedItem;
OuputText = string.Format("first selected index {0} -> [{1}]", SelectedIndex, selected_file.FileID);
}
}
#endregion
#region GetItemX button
public RelayCommand GetItemXCommand { get; set; }
private bool CanDoGetItemX(object obj)
{
if (_Files.Count > 0)
return true;
return false;
}
private void DoGetGetItemX(object obj)
{
int nItem = 0;
if (Int32.TryParse(ItemX, out nItem))
{
if (nItem < _Files.Count)
{
OuputText = string.Format("select index {0} -> [{1}]", nItem, _Files[nItem].FileID);
}
}
else
OuputText = "-";
}
#endregion
#endregion
}
}
ICommand code: ViewModels \ RelayCommand.cs
using System;
using System.Windows.Input;
namespace ListBox_CaliburnMicro.ViewModels
{
public class RelayCommand : ICommand
{
#region field
readonly Action<object> _execute;
readonly Predicate<object> _canExecute;
#endregion
#region constructors
public RelayCommand(Action<object> execute) : this(execute, null)
{
}
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentException("execute");
_execute = execute;
_canExecute = canExecute;
}
#endregion
#region member
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
_execute(parameter);
}
#endregion
#region raise
public void RaiseCanExecuteChanged()
{
/*if (CanExecuteChanged != null)
CanExecuteChanged(this, EventArgs.Empty);*/
}
#endregion
}
}
Model code: Model \ File.cs
using System;
using System.ComponentModel;
namespace ListBox_CaliburnMicro.Model
{
public class File : INotifyPropertyChanged
{
private Guid _FileID;
public Guid FileID
{
get
{
return _FileID;
}
set
{
_FileID = value;
OnPropertyChanged("FileID");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private string _FileStatus;
public string FileStatus
{
get
{
return _FileStatus;
}
set
{
_FileStatus = value;
OnPropertyChanged("FileStatus");
}
}
private string _FileName;
public string FileName
{
get
{
return _FileName;
}
set
{
_FileName = value;
OnPropertyChanged("FileName");
}
}
public int _FileSize;
public int FileSize
{
get
{
return _FileSize;
}
set
{
_FileSize = value;
OnPropertyChanged("FileSize");
}
}
private string _FileType;
public string FileType
{
get
{
return _FileType;
}
set
{
_FileType = value;
OnPropertyChanged("FileType");
}
}
private string _FileEmailCount;
public string FileEmailCount
{
get
{
return _FileEmailCount;
}
set
{
_FileEmailCount = value;
OnPropertyChanged("FileEmailCount");
}
}
private string _FileInfoCount;
public string FileInfoCount
{
get
{
return _FileInfoCount;
}
set
{
_FileInfoCount = value;
OnPropertyChanged("FileInfoCount");
}
}
public File()
{
FileID = Guid.NewGuid();
}
public File(string s1 = "", string s2 = "", int s3 = 0, string s4 = "", string s5 = "", string s6 = "")
{
FileID = Guid.NewGuid();
FileStatus = s1;
FileName = s2;
FileSize = s3;
FileType = s4;
FileEmailCount = s5;
FileInfoCount = s6;
}
}
}
You have to hook up these events to a command and process them in the viewmodel.
Not using Caliburn.Micro but there should also be a concept for EventToCommand Binding. I quick search revealed the following links.
https://caliburnmicro.codeplex.com/wikipage?title=Cheat%20Sheet
https://caliburnmicro.codeplex.com/wikipage?title=All%20About%20Actions
if I did not get your question correct please let me know...
HTH
这篇关于我怎样才能在C#中选择项目(S)和事件的ListView与Caliburn.Micro?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!