更改WPF ListView SelectedItem绑定值

时间:2014-04-22 10:46:52

标签: c# wpf visual-studio-2012

我想在双击一行时更改绑定值。我在谷歌浏览了几页,但没有找到能满足我需要的东西。

这是我的代码以及我希望它如何工作的示例。是否可以在列表视图中编辑行绑定值?

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();
    }

3 个答案:

答案 0 :(得分:0)

我强烈建议不要使用这种方式,尝试遵循MVVM,基于您的属性实现INotifyPropertyChanged

的假设
void LstLinks_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        var selItem = LstLinks.SelectedItem as YourBindingClassObject;

        selItem.LP = "✓";

        LstLinks.ItemsSource = YourItemsSource;
    }

答案 1 :(得分:0)

您无法更改行的绑定。您只能更改将在其下创建行的列的绑定。

假设您的绑定值正确,您提供的代码很可能会使用Sajeetharan所做的更改。由于您没有向我们提供有关您课程的信息,因此我们无法确定您的特定样本是否有效。

此外,我还建议实施INotifyPropertyChanged并提供通知的属性,而不是手动更改每个属性。

答案 2 :(得分:0)

执行此操作的一种方法是对模型对象(具有属性LP)扩展NotificationObject(Microsoft.Practices.Prism.ViewModel)并在LP的setter中引发属性更改通知。 这将照顾刷新视图

相关问题