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