【发布时间】:2017-05-06 05:31:40
【问题描述】:
我想问一下如何使用 MVVM 模式填充列表视图我是 mvvm 模式的初学者,我从做事中学到的东西比阅读更多。我在使用 wpf 之前已经这样做了,但我使用了后面的代码。
我使用 Mvvm Light。我想要的是浏览文件夹的位置,然后用里面的文件填充列表视图
到目前为止,我已经有一个浏览文件夹
我有这个代码
public class OpenFileDialogVM : ViewModelBase
{
public static RelayCommand OpenCommand { get; set; }
private string _selectedPath;
public string SelectedPath
{
get { return _selectedPath; }
set
{
_selectedPath = value;
RaisePropertyChanged("SelectedPath");
}
}
private string _defaultPath;
public OpenFileDialogVM()
{
RegisterCommands();
}
public OpenFileDialogVM(string defaultPath)
{
_defaultPath = defaultPath;
RegisterCommands();
}
private void RegisterCommands()
{
OpenCommand = new RelayCommand(ExecuteOpenFileDialog);
}
private void ExecuteOpenFileDialog()
{
var dialog = new FolderBrowserDialog();
dialog.ShowDialog();
SelectedPath = dialog.SelectedPath;
}
}
我有这个代码用于用户控制
<UserControl x:Class="MvvmLight1.FolderDialog"
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:vm="clr-namespace:MvvmLight1"
xmlns:local="clr-namespace:MvvmLight1"
mc:Ignorable="d" d:DesignWidth="300" Height="186.916" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="90*"/>
<RowDefinition Height="97*"/>
</Grid.RowDefinitions>
<Grid>
<TextBox Text="{Binding SelectedPath}" />
</Grid>
<Grid Grid.Row="1" >
<Button Command="vm:OpenFileDialogVM.OpenCommand" >Browse</Button>
</Grid>
</Grid>
</UserControl>
到目前为止,浏览工作正常。我的问题是如何调用此代码。选择文件夹之后,以便我可以填充我的列表视图?
private void Call(string selectedpath)
{
try
{
var allFiles = Directory.GetFiles(selectedpath, "*", SearchOption.AllDirectories);
foreach (var item in allFiles)
{
System.Console.WriteLine(item);
//code for populating listview
}
}
catch (System.Exception ex)
{
System.Console.WriteLine(ex.StackTrace);
throw ex;
}
}
感谢您的宝贵时间。
【问题讨论】:
-
注意:添加对 System.Windows.Forms 的引用
-
是的。你能帮我或给我一些代码 sn-p 如何使用 MVVM 调用代码?在我选择了一个文件夹后谢谢
-
现在在我的 IDE 中重现。供将来参考,请参阅MCVE,了解如何编写问题(不过这是一项非常好的工作)。
-
非常抱歉,英语对我来说是一门外语。下次我会尝试清楚地提出问题。谢谢
标签: c# wpf listview mvvm mvvm-light