我想問一下如何使用MVVM模式填充listview我是mvvm模式的初學者,我從閱讀中學到了更多的東西。我在使用wpf之前完成了這個,但是我使用了後面的代碼。使用mvvm填充列表視圖
我使用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的 –
是添加引用。你可以幫我或給我一些代碼片段如何使用MVVM調用代碼?在我選擇了一個文件夾之後謝謝 – classname13
現在在我的IDE中重現。有關如何撰寫問題的內容,請參閱[MCVE](https://stackoverflow.com/help/mcve)以供將來參考(儘管如此,這是一項相當不錯的工作)。 –