【问题标题】:WPF ItemsSource binding show only last item of listWPF ItemsSource 绑定仅显示列表的最后一项
【发布时间】:2018-08-23 06:25:32
【问题描述】:

如何在 itemssource 绑定中仅显示列表的最后一项?

下面是我当前的代码。

xaml

<ItemsControl ItemsSource="{Binding UpgradeTicketStorage}" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" >
   <ItemsControl.ItemTemplate>
        <DataTemplate>
             <StackPanel Orientation="Vertical" HorizontalAlignment="Center" Width="800">
                <TextBlock  Text="{Binding TicketTitle}"  Style="{StaticResource TicketSelectionSubTitle}" TextAlignment="Left" />
                <TextBlock  Text="{Binding TicketDescription}"  TextWrapping="Wrap" Style="{StaticResource TicketSelectionSubTitle2}" FontSize="19" TextAlignment="Left"/>
             </StackPanel>
       </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>

从类绑定中,我确实添加了两条记录,即ticketAticketB,我怎样才能只显示ticketB 信息?而不是 A 和 B

public class UpgradeTicketDescription : ViewModelBase
    {

        public string TicketTitle { get; set; }
        public string TicketDescription { get; set; }
    }

List<UpgradeTicketDescription> _UpgradeTicketStorage;
public List<UpgradeTicketDescription> UpgradeTicketStorage
    {
        get { return _UpgradeTicketStorage; }
        set { _UpgradeTicketStorage = value; OnPropertyChanged("UpgradeTicketStorage"); }
    }
 UpgradeTicketStorage.Add(new UpgradeTicketDescription { TicketTitle = "TicketA", TicketDescription = "Observation DeckA (Single Ticket)"});
 UpgradeTicketStorage.Add(new UpgradeTicketDescription { TicketTitle = "TicketB", TicketDescription = "Observation DeckB (Single Ticket)"});

【问题讨论】:

  • 如果您只想显示最后一个,为什么要使用项目控件。如果你真的需要一个 UpgradeTicketStorage 列表,为什么不绑定到 UpgradeTicketStorage.Last() 的表达式属性

标签: c# wpf list itemssource


【解决方案1】:

如果您想绑定到列表中的特定项目,您可以通过创建一个您将绑定到的公共变量来实现它。使用您提供的内容,我创建了一个适用于列表中最后一项的示例,我所做的只是创建一个名为 LastItem 的新变量,并更改了项目中的绑定方式。这只是解决此问题的众多方法之一。

xaml

<StackPanel Orientation="Vertical" HorizontalAlignment="Center" Width="800">
  <TextBlock  Text="{Binding LastItem.TicketTitle}" TextAlignment="Left" />
  <TextBlock  Text="{Binding LastItem.TicketDescription}"  TextWrapping="Wrap" FontSize="19" TextAlignment="Left"/>
</StackPanel>

public UpgradeTicketDescription LastItem
  {
  get { return UpgradeTicketStorage.Last(); }
  }

这提供了以下输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2013-01-14
    • 2015-04-07
    相关资源
    最近更新 更多