gpt4 book ai didi

wpf - 如何使ListView中的列可编辑?

转载 作者:行者123 更新时间:2023-12-02 06:48:11 30 4
gpt4 key购买 nike

我使用 WPF (C#)。

我希望用户能够编辑列“描述”:

<ListView>
<ListView.View>
<GridView>

<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"></GridViewColumn>
<GridViewColumn Header="Number" DisplayMemberBinding="{Binding Path=Number}"></GridViewColumn>
<GridViewColumn Header="Description" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Description}" TextWrapping="Wrap" Margin="0"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

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

请告诉我,如何使列“Description”可编辑

为此目的使用另一个控件可能会更好吗?什么?

最佳答案

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

Normal模式下,使用TextBlock来显示内容;在编辑模式下,会弹出一个文本框进行编辑。

从 Control 继承的类

Editing In ListView

public class EditBox : Control
{
static EditBox()
{
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value",
typeof(object),
typeof(EditBox),
new FrameworkPropertyMetadata());
}

为 IsEditing 添加依赖属性。

 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 中,您可以放置​​ EditBox:

   <GridViewColumn Header="Description" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<i:EditBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

关于wpf - 如何使ListView中的列可编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903970/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com