【问题标题】:wpf File Explorer change name of file inside ListViewwpf文件资源管理器更改ListView中文件的名称
【发布时间】:2015-11-04 10:12:21
【问题描述】:

您好,我有一个名为 FileDirectoryModel 的模型,它包含:

   public class FileDirectoryModel
    {
        public string imgPath { get; set; }
        public string DirPath { get; set; }
        public string FileName { get; set; }
        public string size { get; set; }
        public string FileType { get; set; }
        public DateTime Modifed { get; set; }
        public string FullName { get; set; }
    }

我也有一个 ListView :

   <ListView x:Name="lstExplorer"
              Background="White"
              ItemsSource="{Binding DirectoryCollection}"
              SelectedItem="{Binding SelectedModel}"
              >
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction Command="{Binding FileExplorerClickCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Name"
                                Width="100">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Image Source="{Binding imgPath}"
                                       Height="20"
                                       Width="20"
                                       Stretch="Fill"/>
                                <TextBlock x:Name="explorerText"
                                         Text="{Binding FileName}">
                                </TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Width="50">
                    <GridViewColumnHeader>
                        <TextBlock Text="Size" />                            
                    </GridViewColumnHeader>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>
                                <TextBlock Text="{Binding size}" />
                            </Grid>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Width="100">
                    <GridViewColumnHeader>
                        <TextBlock Text="Type" />
                    </GridViewColumnHeader>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>
                                <TextBlock Text="{Binding FileType}" />
                            </Grid>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Width="100">
                    <GridViewColumnHeader>
                        <TextBlock Text="Modifed" />
                    </GridViewColumnHeader>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>
                                <TextBlock Text="{Binding Modifed}" />
                            </Grid>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

            </GridView>
        </ListView.View>
    </ListView>

DirectoryCollection 是:

    private ObservableCollection<FileDirectoryModel> _DirectoryCollection;

    public ObservableCollection<FileDirectoryModel> DirectoryCollection
    {
        get { return _DirectoryCollection; }
        set
        {
            if (_DirectoryCollection != value)
            {
                _DirectoryCollection = value;
                OnPropertyChanged();
            }
        }
    }

有一个 dubbleclick 命令可以打开选定的文件,但我很难弄清楚如何允许某人更改所选项目的名称。

请注意,我看到 File ListView, Change name 不适用,因为他们告诉的是如何更改文件名而不是如何让 xaml 允许更改。

【问题讨论】:

  • 这可能会有所帮助....stackoverflow.com/questions/10207888/… 只需确保将事件句柄中的 mousedoubleclick 计数 arg 检查为 2
  • 如何绑定以允许仅对选定记录进行编辑?
  • 编辑是什么意思?像 datagrid 这样编辑字段吗?
  • 不,名称字段是一个文本框,但我希望它被锁定,除了某些人之外没有人可以更改名称。
  • 您想在列表框列中进行内联编辑吗?这样允许的人可以直接进行内联编辑。

标签: wpf listview mvvm


【解决方案1】:

您需要设置一个 CommandParameter 来传递获取双击项目的名称。

<i:EventTrigger EventName="MouseDoubleClick">
    <i:InvokeCommandAction Command="{Binding FileExplorerClickCommand}"
     CommandParameter="{Binding}/>
</i:EventTrigger>

双击的 FileDirectoryModel 项目将被传递给 FileExplorerClickCommand 方法(您需要更改方法参数。然后您可以对该项目执行任何您需要的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-02
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多