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;
}
}
ありがとうございます。
あなたのビューモデルは、ディレクトリを選択したときに移入されたファイル名public ObservableCollection<string> FileNames { get; }
= new ObservableCollection<string>();
のObservableCollection
を持っている必要があり
注:のSystem.Windows.Formsのための参照を追加 –
はい。 MVVMを使用してコードを呼び出す方法を教えてください。私はフォルダを選択した後にありがとう – classname13
今私のIDEで再現。将来の参考として、質問を書く方法については[MCVE](https://stackoverflow.com/help/mcve)を参照してください(これはかなり良い仕事です)。 –