[英]Change WPF ListView SelectedItem binding value
當我雙擊一行時,我試圖更改綁定值。 我瀏覽了Google的幾頁,但沒有找到滿足我需求的內容。
這是我的代碼,以及我希望它如何工作的示例。 是否可以像這樣在列表視圖中編輯行綁定值?
WPF:
<ListView x:Name="LstLinks" HorizontalAlignment="Left" Height="108" Margin="10,53,0,0" VerticalAlignment="Top" Width="641" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="G" Width="20" DisplayMemberBinding="{Binding LG}" />
<GridViewColumn Header="P" Width="20" DisplayMemberBinding="{Binding LP}" />
<GridViewColumn Header="Link Type" Width="100" DisplayMemberBinding="{Binding LType}"/>
<GridViewColumn Header="Code" Width="60" DisplayMemberBinding="{Binding LCode}"/>
<GridViewColumn Header="Company" Width="150" DisplayMemberBinding="{Binding LComp}"/>
<GridViewColumn Header="Name" Width="150" DisplayMemberBinding="{Binding LName}"/>
<GridViewColumn Header="Address" Width="137" DisplayMemberBinding="{Binding LAddress}"/>
</GridView>
</ListView.View>
</ListView>
C#:
void LstLinks_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var selItem = LstLinks.SelectedItem;
//selItem.LP = "✓"; <-- Does not work. Cannot have ".LP"
LstLinks.Items.Refresh();
}
我強烈建議您不要使用這種方式,請嘗試遵循MVVM,前提是您的屬性實現了INotifyPropertyChanged
void LstLinks_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var selItem = LstLinks.SelectedItem as YourBindingClassObject;
selItem.LP = "✓";
LstLinks.ItemsSource = YourItemsSource;
}
您不能更改行的綁定。 您只能更改將在其下創建行的列的綁定。
假設綁定值正確,那么您提供的代碼很可能將與Sajeetharan所做的更改一起使用。 由於您沒有向我們提供有關您的課程的信息,因此我們不能肯定地說您的特定樣本可以使用。
另外,我建議建議實現INotifyPropertyChanged
並提供一個通知的屬性,而不是手動更改每個屬性。
一種實現方法是對模型對象(具有LP屬性)擴展NotificationObject(Microsoft.Practices.Prism.ViewModel)並在LP的setter中引發屬性更改的通知。 這樣可以刷新視圖
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.