Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双击时如何使listview列可编辑?_C#_.net_Wpf_Listview - Fatal编程技术网

C# 双击时如何使listview列可编辑?

C# 双击时如何使listview列可编辑?,c#,.net,wpf,listview,C#,.net,Wpf,Listview,因此,我有一个带有几个标题的listview,当设置数据时,我希望可以选择双击其中一列来编辑值。 这是否可能?如果可能,正确的方法是什么 <ListView Name="LvProducts" Margin="224,204,10,35"> <ListView.View> <GridView> <GridViewColumn Header="ID" Width

因此,我有一个带有几个标题的listview,当设置数据时,我希望可以选择双击其中一列来编辑值。 这是否可能?如果可能,正确的方法是什么

<ListView Name="LvProducts" Margin="224,204,10,35">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="ID" Width="120" DisplayMemberBinding="{Binding ID}" />
                    <GridViewColumn Header="SKU" Width="50" DisplayMemberBinding="{Binding SKU}" />
                    <GridViewColumn Header="Name" Width="150" DisplayMemberBinding="{Binding Name}" />
                    <GridViewColumn Header="Description" Width="150" DisplayMemberBinding="{Binding Description}" />
                    <GridViewColumn Header="In Stock" Width="150" DisplayMemberBinding="{Binding InStock}" />
                    <GridViewColumn Header="Price" Width="150" DisplayMemberBinding="{Binding Price}" />
                    <GridViewColumn Header="Images" Width="150" DisplayMemberBinding="{Binding Images}" />
                </GridView>
            </ListView.View>
        </ListView>

萨吉塔兰在本文中回答

为GridViewColumn.CellTemplate创建名为EditBox的自定义控件

在正常模式下,文本块用于显示内容;在编辑模式下,将弹出一个文本框进行编辑

从控件中继承的类

public class EditBox : Control
{
            static EditBox()
            {              
            public static readonly DependencyProperty ValueProperty =
                    DependencyProperty.Register(
                            "Value",
                            typeof(object),
                            typeof(EditBox),
                            new FrameworkPropertyMetadata());
}
为iEdit添加依赖项属性

public static DependencyProperty IsEditingProperty =
                    DependencyProperty.Register(
                            "IsEditing",
                            typeof(bool),
                            typeof(EditBox),
                            new FrameworkPropertyMetadata(false)
                            );
自定义编辑框的样式:

<Style x:Key="{x:Type l:EditBox}" TargetType="{x:Type l:EditBox}" >
      <Setter Property="HorizontalAlignment" Value="Left"  />
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type l:EditBox}">
                <TextBlock x:Name="PART_TextBlockPart" 
                     Text="{Binding Path=Value, RelativeSource = {RelativeSource TemplatedParent}}">
                </TextBlock>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>

在Xaml中,可以在每列中放置编辑框:

//Example with first column
<GridViewColumn Header="ID" Width="120" DisplayMemberBinding="{Binding ID}">
        <GridViewColumn.CellTemplate>
            <DataTemplate>
               <i:EditBox>
            </DataTemplate>
        </GridViewColumn.CellTemplate>
    </GridViewColumn>
//第一列的示例

Sajeetharan在本文中回答了您的问题