双击时如何更改listview项值?

时间:2017-10-13 13:13:25

标签: c# .net wpf listview events

所以我的应用程序工作正常,但我觉得我开始用新窗口混乱应用程序。 我现在正在做的是,我使用StreamReader类从列表中填充我的ListView。 我也使用了一个我用来绑定所有数据的类。

当我双击ListViewItem时发生的事情是打开一个新窗口,其中包含属性&已填写的值,您可以通过这种方式进行更改。 但我想要做的是摆脱打开的新窗口,当我双击时能够更改ListView中的值。 我有哪些选择以及实现这一目标的正确方法是什么?

XAML                                                                                                                  

            </ListView.View>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>

CS

private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (sender is ListViewItem item && item.IsSelected)
            {
                var SelectedServerProperties = ((ServerProperties)lvServerProperties.SelectedItem);
                Properties.Settings.Default.ServerProperty = SelectedServerProperties.Property;
                Properties.Settings.Default.ServerPropertyValue = SelectedServerProperties.Value;

                PropertyChangerWindow pcw = new PropertyChangerWindow();
                pcw.Show();
            }
        }

PropertyWindow

public partial class PropertyChangerWindow : Window
    {
        public PropertyChangerWindow()
        {
            InitializeComponent();
            tbProperty.Text = Properties.Settings.Default.ServerProperty;
            tbValue.Text = Properties.Settings.Default.ServerPropertyValue;
        }

    }

ServerProperties Class

public class ServerProperties
{
    public string Property { get; set; }
    public string Value { get; set; }
}

1 个答案:

答案 0 :(得分:1)

如果您将ListView替换为DataGrid,只需双击即可进入单元格的编辑模式:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Property" Binding="{Binding Property}" />
        <DataGridTextColumn Header="Value" Binding="{Binding Value}" />
    </DataGrid.Columns>
</DataGrid>

DataGrid提供开箱即用的此功能。