所以我的应用程序工作正常,但我觉得我开始用新窗口混乱应用程序。 我现在正在做的是,我使用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; }
}
答案 0 :(得分:1)
如果您将ListView
替换为DataGrid
,只需双击即可进入单元格的编辑模式:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Property" Binding="{Binding Property}" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
</DataGrid>
DataGrid
提供开箱即用的此功能。