0

テキストファイル(およびそれらのファイルの名前)のデータをC#Metroスタイルアプリのリストボックスにバインドしようとしています。

私はMetroサンプルをチェックしました-しかし、私はそれらからあまり意味をなすことができませんでした。そもそもXAMLは比較的新しいので、Metroスタイルアプリの上にそれを投げると混乱が増します。

WinFormsでのこのような些細な作業の場合、自分でOSを作成しようとしているように感じます。

誰かが私を少し助けてくれますか?私は検索して検索しましたが、同じ古いチュートリアル/ドキュメントを見つけることになります。多分それは私だけですが、この分野のドキュメントが不足していると感じています。多分それはまだ完了していませんか?

どんな助けでも大歓迎です:)

4

1 に答える 1

1

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();
于 2012-09-14T06:41:30.400 に答える