簡體   English   中英

更改WPF ListView SelectedItem綁定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM