簡體   English   中英

Listbox 的 ItemSource 不會在項目更改時更新

[英]ItemSource of Listbox is not updated on item change

在我的 WPF 應用程序中,我有包含項目集合的 ListBox。 單擊按鈕並在打開的對話框中選擇它時,可以添加一項。 一旦選擇了一個項目,對話框就會關閉,項目的圖像和名稱應該顯示在我的 ListBox 中。 不幸的是,列表框沒有更新,也沒有任何變化。

帶有列表框的用戶控件:

 <ListBox ItemsSource="{Binding BlButtonCollection, UpdateSourceTrigger=PropertyChanged}" VerticalContentAlignment="Stretch" SelectedItem="{Binding SelectedSticker}" HorizontalContentAlignment="Stretch" ItemContainerStyle="{StaticResource ListBoxItemStyle}"> <ListBox.Resources> <viewmodels1:BindingProxy x:Key="ProxyElement" Data="{Binding}" /> </ListBox.Resources> <ListBox.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Columns="4" Rows="10"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> <ListBox.ItemTemplate> <DataTemplate> <Border BorderBrush="Black" BorderThickness="1"> <Grid x:Name="f"> <Grid.RowDefinitions> <RowDefinition Height="5*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Button x:Name="btnSelectArticle" Background="Transparent" Grid.RowSpan="2" BorderThickness="0" Command="{Binding DataContext.ButtonClicked,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"/> <Image Height="1.5cm" HorizontalAlignment="Center" Source="{Binding ItemImage.ImageUrl, Converter={StaticResource ImageFormatConverter}}"/> <TextBlock Text="{Binding ItemName}" Width="4cm" Height="0.8cm" TextWrapping="Wrap" Grid.Row="1" HorizontalAlignment="Center"/> </Grid> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox>

主 window 中的 ListBoxes 控件:

 <formats:OneXTwo x:Name="oneXTwo" BlButtonCollection="{Binding BlButtons_2}" IsBlVisible="Visible" Visibility="{Binding Are2StickersVisible}" ButtonClicked="{Binding BlStickerButtonClickedCommand}"/> <formats:ThreeXEight x:Name="threeXEight" BlButtonCollection="{Binding BlButtons_24}" IsBlVisible="Visible" Visibility="{Binding Are24StickersVisible}" ButtonClicked="{Binding BlStickerButtonClickedCommand}"/> <formats:FourXTen x:Name="fourXTen" BlButtonCollection="{Binding BlButtons_40, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" IsBlVisible="Visible" Visibility="{Binding Are40StickersVisible}" ButtonClicked="{Binding BlStickerButtonClickedCommand}" SelectedSticker="{Binding SelectedBlSticker, Mode=TwoWay}" />

我應該提到我有三種不同的格式,每種格式都是自己的用戶控件。 因此,它們顯示在 shell 視圖中,並基於 ComboBox 選擇顯示一種格式。 如果我正在運行應用程序 select 圖像,則不會發生任何事情,但是如果我在列表視圖中更改文本塊的綁定值並將其切換回“項目名稱”,則會顯示圖像和名稱。

  • 您是否將 DataContext 設置為特定的 ViewModel?
  • ObservableCollection 只能確保對可以更新到 UI 的項目進行添加/刪除操作。 如果您希望 item 屬性通知 UI,您應該重寫該屬性的 setter 並實現 IPropertyChangedNotify。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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