2017-10-13 124 views
0

因此,我的應用程序工作正常,但我覺得即將開始使用新窗口來混淆應用程序。 我現在正在做的是,即時填充我的ListView與我從使用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類

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

回答

1

如果用DataGrid更換ListView,您將能夠通過簡單地雙擊它進入細胞的編輯模式:

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

DataGrid提供此功能開箱即用。

+0

令人驚歎!快速的問題,有沒有辦法擺脫出現的虛線箭頭?我需要點擊模板perchaps嗎? https://i.imgur.com/iTIBIA4.gifv –

+0

只需將DataGrid的CanUserSortColumns屬性設置爲false即可。 – mm8

+0

啊,就是這樣!如果它沒有太多要求,你碰巧知道爲什麼當雙擊一個項目時,爲什麼我不能獲得EditItem對於這個視圖是不允許的?或者我應該發佈一個關於該問題的新問題? –

相關問題