C# ListViewItem作为EditableTextBlock
我有一个C# ListViewItem作为EditableTextBlock,c#,wpf,C#,Wpf,我有一个列表视图。此列表视图的Itemsource由ObservableCollection填充 我试图实现的是使ListViewItems可编辑。因此我下载了这个解 只要我的列表视图中没有填充可观察集合,我就可以实现这一点 我的代码没有可观察到的收集: private void ListView1_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.F2) SetCurrentItemInEditMode(
列表视图
。此列表视图的Itemsource由ObservableCollection
填充
我试图实现的是使ListViewItems可编辑。因此我下载了这个解
只要我的列表视图
中没有填充可观察集合
,我就可以实现这一点
我的代码没有可观察到的收集
:
private void ListView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.F2)
SetCurrentItemInEditMode(true);
}
private void SetCurrentItemInEditMode(bool EditMode)
{
ListViewItem m = (ListViewItem)ListView1.SelectedItem;
EditableTextBlock e = m.Content as EditableTextBlock;
e.IsInEditMode = EditMode;
}
但是,当我用observedcollection
填充ListView
项时,它不起作用
MyFiles m = (MyFiles)ListView1.SelectedItem;
EditableTextBlock e = m.FileName as EditableTextBlock;
e.IsInEditMode = EditMode;
MyFiles包含(文件名、文件创建和文件图标)。我想将所选的文件名ListViewItem
转换为EditableTextBlock
控件
谢谢你的帮助
另外,我是WPF的新手,如果我的问题很愚蠢,请道歉。您应该在XAML标记中定义一个带有EditableTextBlock
的ItemTemplate
。请注意绑定:
<ListView x:Name="ListView1">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<local:EditableTextBlock Text="{Binding FileName}" IsInEditMode="{Binding IsInEditMode}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
为了让它发挥作用,您的MyFiles
类应该实现INotifyPropertyChanged
接口,并在IsInEditMode
属性的setter中引发PropertyChanged
事件,如MSDN:上所述。您应该在XAML标记中使用EditableTextBlock
定义一个ItemTemplate
。请注意绑定:
<ListView x:Name="ListView1">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<local:EditableTextBlock Text="{Binding FileName}" IsInEditMode="{Binding IsInEditMode}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
为此,您的MyFiles
类应该实现INotifyPropertyChanged
接口,并在IsInEditMode
属性的setter中引发PropertyChanged
事件,如MSDN上所述:这是您链接的非常糟糕的解决方案,看起来这个家伙来自winforms,还没有听说过数据模板。在WPF中使某些内容可编辑非常容易,您只需提供适当的模板并使用双向绑定。找不到简单的副本,请参见,例如,您链接的解决方案非常糟糕,看起来这家伙来自winforms,还没有听说过数据模板。在WPF中使某些内容可编辑非常容易,您只需提供适当的模板并使用双向绑定。找不到简单的副本,请参见例如…谢谢!工作很有魅力。作为奖励,我终于明白了InotifyProperty的变化非常感谢。工作很有魅力。作为奖励,我终于明白了InotifyProperty的变化