在我的 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>
主視窗中帶有 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 選擇顯示一種格式。如果我正在運行應用程式,選擇一個影像沒有任何反應,但如果我在串列視圖中更改文本塊的系結值并將其切換回“專案名稱”,則會顯示影像和名稱。
uj5u.com熱心網友回復:
- 您是否將 DataContext 設定為特定的 ViewModel?
- ObservableCollection 只能確保對可以更新到 UI 的專案進行添加/洗掉操作。如果您希望 item 屬性通知 UI,您應該重寫該屬性的 setter 并實作 IPropertyChangedNotify。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/406463.html
標籤:
