ファイラーその2

ListBoxItemのダブルクリックイベントを実装する。

MainWindow.xaml

            <ListBox Name="currentFolderFiles" ItemsSource="{Binding Path=Files}">
                <ListBox.ItemContainerStyle>
                    <Style TargetType="{x:Type ListBoxItem}">
                        <EventSetter Event="MouseDoubleClick" Handler="listBoxItem_DoubleClick" />
                    </Style>
                </ListBox.ItemContainerStyle>
            </ListBox>

MainWindow.xaml.cs

    public partial class MainWindow : Window
    {
        private FileView fileView_ = new FileView("C:\\");

        public MainWindow()
        {
            InitializeComponent();

            DataContext=fileView_;
        }

        private void listBoxItem_DoubleClick(object sender, MouseButtonEventArgs args)
        {
            var item = sender as ListBoxItem;
            var directory = item.Content as DirectoryInfo;
            if (directory != null)
            {
                fileView_.Current=directory;
                return;
            }
            var file = item.Content as FileInfo;
            if(file != null)
            {
                return;
            }

        }
    }

FileView.cs

        private DirectoryInfo current_;

// 追加
        public DirectoryInfo Current
        {
            get { return current_; }
            set
            {
                current_ = value;
                NotifyPropertyChanged("Current");
                NotifyPropertyChanged("Path");
                /* 入れ物が変わってしまう・・・
                files_ = new ObservableCollection<FileSystemInfo>(
                current_.GetFileSystemInfos().ToArray());
                 */
                files_.Clear();
                foreach (var e in current_.GetFileSystemInfos())
                {
                    files_.Add(e);
                }
            }
        }

        public string Path
        {
            get { return current_.FullName; }
            set
            {
                Current = new DirectoryInfo(value);
            }
        }

ディレクトリの上に来たらマウスカーソルを変える

MainWindow.xaml

        <DataTemplate DataType="{x:Type IO:DirectoryInfo}">
            <Label Content="{Binding Path=Name}"  Foreground="#FF2222" Cursor="Hand"/>
        </DataTemplate>

横いっぱいに広げる

<ListBox x:Name="currentFolderFiles" ItemsSource="{Binding Path=Files}" HorizontalContentAlignment="Stretch">

ディレクトリに戻るボタン

MainWindow.xaml

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" Name="currentFolder" Text="{Binding Path=Path}" />
            <Button Grid.Column="1" Name="goParent" Width="30" Content=".." Click="goParent_Click" Cursor="Hand"/>
        </Grid>

立て分割のGridに、横分割のGridを入れ子にした
MainWindow.xaml.cs

        private void goParent_Click(object sender, RoutedEventArgs e)
        {
            if (fileView_.Current.Parent != null)
            {
                fileView_.Current = fileView_.Current.Parent;
            }
        }

ToDo:アイコン表示