V は辞書を宣言し、すべてのファイルをループして、名前をキーとして、ファイルの内容を値として追加します。
次に XAML で、リストボックスをディクショナリ内の項目にバインドし、displaymemberpath を KeyValuePair のキーに設定します。
コンテンツを表示する他のコントロールを更新することを選択すると。コードで例を作成できるかどうかを確認します。
ここでの例では、スタイリングを見ないでください:)このMy ViewModelにMVVMを使用しました
namespace WPFTest.ViewModels
{
using System.IO;
using System.Windows.Input;
using Microsoft.Practices.Prism.Commands;
public class MainViewModel : NotificationObject
{
public MainViewModel()
{
FileList = new Dictionary<string, string>();
FillFileListCommand = new DelegateCommand(FillFileListExecuted);
}
private Dictionary<string, string> fileList;
public Dictionary<string,string> FileList
{
get
{
return fileList;
}
set
{
fileList = value;
RaisePropertyChanged(()=>FileList);
}
}
public ICommand FillFileListCommand { get; set; }
private void FillFileListExecuted()
{
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = Directory.GetFiles(path, "*.txt");
var dict = new Dictionary<string, string>();
foreach (var file in files)
{
using (var reader = new StreamReader(file))
{
var text = reader.ReadToEnd();
dict.Add(file, text);
}
}
FileList = dict;
}
}
}
xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="347*" />
<RowDefinition Height="414*" />
</Grid.RowDefinitions>
<ListBox Height="701" Name="listBox1" Width="302" Margin="12,48,664,0" VerticalAlignment="Top" ItemsSource="{Binding FileList}" DisplayMemberPath="Key" Grid.RowSpan="2" />
<TextBlock Height="737" HorizontalAlignment="Left" Margin="320,12,0,0" Name="textBlock1" Text="{Binding ElementName=listBox1, Path=SelectedItem.Value}" VerticalAlignment="Top" Width="646" TextWrapping="Wrap" Grid.RowSpan="2" />
<Button Content="Fill" Height="30" HorizontalAlignment="Left" Margin="12,12,0,0" Name="button1" VerticalAlignment="Top" Width="302" Command="{Binding FillFileListCommand}" />
</Grid>
そして、xamlのコードビハインドで言う
DataContext = new MainViewModel();