【问题标题】:Listbox UI Update after adding Item to a list of objects将项目添加到对象列表后的列表框 UI 更新
【发布时间】:2015-11-15 06:56:40
【问题描述】:

我得到了这份清单:

  List<BoardNote> offlinelist = new List<BoardNote>();

它绑定到我的列表框“boardlist”。 现在我希望每次添加新的 Boardnote 后 Listbox 的 UI 都会更新。 我已经知道我应该使用“INotifyCollectionChanged”,但我已经过度紧张了。 这是“boardlist”的代码:

 <ListBox x:Name="BoardList" ItemsSource="{Binding offlinelist}" > //I need to add binding mode two way and property changed idk
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                            <TextBox IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Visible" Text="{Binding text}" TextWrapping="Wrap" Foreground="DarkBlue"></TextBox>
                            <AppBarButton Visibility="{Binding visibility}" Icon="Globe" Click="OpenInBrowser" x:Name="Link"></AppBarButton>
                            <AppBarButton Icon="Copy" Click="Copy"></AppBarButton>
                            <AppBarButton Icon="Delete" Click="Delete"></AppBarButton>
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

【问题讨论】:

    标签: c# xaml binding listbox inotifycollectionchanged


    【解决方案1】:

    您需要在 ViewModel 中实现 ObservableCollection 才能获得更新。

    【讨论】:

      【解决方案2】:

      您可以使用 ObservalbleList 代替 List。它已经为你实现了 INotifyCollectionChanged。

      【讨论】:

      • 所以我做了以下更改,但它不起作用: ObservableCollection offlinelist = new ObservableCollection();和 ItemsSource="{Binding offlinelist, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 和 var newnote = new BoardNote(UserInput.Text); offlinelist.Add(newnote);不更新用户界面
      • 你的offlineList 有属性吗?它不适用于字段。此外,如果您没有为绑定指定任何其他选项,则需要将 DataContext 设置为您的 ViewModel。
      • 这不是问题,Datacontext 和类似的东西工作正常,如果我在添加项目后将 itemsource 设置为脱机列表,项目会显示,但它在绑定后不会更新。跨度>
      • 看一看:这是我的列表框的代码:stackoverflow.com/questions/32118282/… -> 1st answer
      • 如果您手动设置 itemssource,您将覆盖绑定。将您的 itemList 公开为属性或在代码中设置与 itemssource 的绑定。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多