私のアプリケーションはうまくやっていますが、新しいウィンドウでアプリケーションを乱雑にするような気がします。 私が今行っているのは、ListReadをStreamReaderクラスの使用から得たリストで埋め込むことです。 私は、すべてのデータをバインドするようにしたクラスも使用しています。ダブルクリックするとリストビュー項目の値を変更するにはどうすればよいですか?
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;
}
}
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Property" Binding="{Binding Property}" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
</DataGrid>
DataGrid
がこれを提供します。あなたは、あなたがそれを単にダブルクリックしてセルの編集モードに入ることができるようになりますDataGrid
でListView
を交換する場合ServerPropertiesクラス
public class ServerProperties
{
public string Property { get; set; }
public string Value { get; set; }
}
すごい!クイック質問、そこに現れる青矢印を取り除く方法はありますか?私はテンプレートのパーチャップをする必要がありますか? https://i.imgur.com/iTIBIA4.gifv –
DataGridのCanUserSortColumnsプロパティをfalseに設定するだけです。 – mm8
ああそうだよ!そして、あまりにも多くの質問をしなければ、アイテムをダブルクリックしたときにこのビューにEditItemが表示され続ける理由を知っていますか?それとも新しい質問を投稿すべきですか? –