【发布时间】:2018-05-21 04:10:34
【问题描述】:
我正在尝试将列表视图绑定到 ObservableCollection。
我查看了堆栈上的几个主题,但找不到我做错了什么:
我的 XAML 看起来像这样(对于 GridViewColumn,我尝试了使用 Path= 和没有,因为我看到了它们):
<ListView x:Name="ListView1" ItemsSource="{Binding listeAff}" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4" MouseDoubleClick="ListView_MouseDoubleClick" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" >
<ListView.ContextMenu>
<ContextMenu x:Name="Context1">
<MenuItem Header="{x:Static p:Resources.ContextSupprimer}" Click="Supprimer_Element"/>
<MenuItem x:Name="MenuBarNesting" Header="{x:Static p:Resources.ContextMiseEnBarre}" Click="Open_MiseEnBarre"/>
<MenuItem x:Name="MenuExportDSTV1" Header="{x:Static p:Resources.ContextExport}" Click="Export_DSTV"/>
<MenuItem x:Name="AjouterAffaire" Header="{x:Static p:Resources.AjouterAffaire}" Click="AjoutAffaire"/>
<MenuItem x:Name="ModifyAffaire" Header="{x:Static p:Resources.Edit}" Click="ModifierAffaire"/>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView AllowsColumnReorder="true" x:Name="GridView1">
<GridViewColumn DisplayMemberBinding="{Binding Path=ID}" Header="ID" />
<GridViewColumn DisplayMemberBinding= "{Binding Nom}" Header="{x:Static p:Resources.Nom}"/>
<GridViewColumn DisplayMemberBinding="{Binding Code}" Header="{x:Static p:Resources.Code}"/>
<GridViewColumn DisplayMemberBinding="{Binding Comm}" Header="{x:Static p:Resources.Commentaire}"/>
</GridView>
</ListView.View>
</ListView>
那么后面的代码是这样的:
public ObservableCollection<Affaire> listeAff { get; set; }
public MainWindow()
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Properties.Settings.Default.Langue);
InitializeComponent();
Initialisation();
listeAff = new ObservableCollection<Affaire>();
DBConnect DataBase = new DBConnect();
string requete = "SELECT * FROM affaire ORDER BY ID";
List<Affaire> liste = DataBase.Select_affaire(requete);
foreach(Affaire aff in liste)
{
listeAff.Add(aff);
}
DataContext = this;
在那部分我的 ListView 显示正确,但是当我想删除(例如)列表中的某些对象时,listview 没有更新:
foreach (Affaire aff in ListView1.SelectedItems)
{
listeAff.Remove(aff);
}
我错过了什么?
【问题讨论】:
-
您是否在此处获取任何行 List
liste = DataBase.Select_affaire(requete); , 你能检查一下调试吗 -
所以是的,我重新返回了一些行,并且列表也更新了,但是正如 Monish Koyott 所提到的,我没有任何 InotifyPropertyChanged(我第一次尝试 ObservableCollections),我正在尝试实现它, 但这不是一件容易的事:)
-
你能按照我的建议尝试数据绑定吗,DataContext = this;表示您正在将 datacontext 分配给您的列表视图所在的窗口
-
更新了我的答案,如何实现NotifyPropertyChanged..看看
-
这对你有用吗??
标签: c# listview binding observablecollection