Listbox 数据绑定 NewItemPlaceholder

3
我有一个可观察的集合绑定到一个列表框。 这个集合有2个项,但是列表框显示了3个项(例如实际上在可观察的集合中的2个项和一个额外的NewItemPlaceholder项)。
我希望它只显示这2个项。
以下是我的XAML。
<ListBox MinHeight="20" MinWidth="20" Name="MultipleSelectionsMultipleWagersListBox"  Visibility="{Binding Path=Coupon.BarcodeText, Converter={StaticResource CouponBarcodeToVisibilityConverter1}, ConverterParameter=994450_994550}" Height="AUto" Width="Auto" VerticalAlignment="Stretch"  HorizontalAlignment="Stretch" Margin="5"
         ItemsSource="{Binding Path=BetViewModels}" Grid.Row="1" Grid.Column="1" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <View:BetView  DataContext="{Binding}" Name="ThisBet" Margin="5"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这里是C#代码

  private ObservableCollection<BetViewModel> _betViewModels = new ObservableCollection<BetViewModel>();
    public ObservableCollection<BetViewModel> BetViewModels
    {
        get { return _betViewModels; }
        set
        {
            if (Equals(value, _betViewModels)) return;
            _betViewModels = value;
            OnPropertyChanged("BetViewModels");
        }
    }

以下是填充betViewModels的代码:
var betViewModel = new BetViewModel { Bet = new Bet() };
betViewModel.Bet.SelectionName = "Chelsea";
betViewModel.Bet.Price = "4/9";
betViewModel.Bet.Market = "90 Minutes";
betViewModel.Bet.ExpectedOdd = DateTime.Now;
BetViewModels.Add(betViewModel);

betViewModel = new BetViewModel { Bet = new Bet() };
betViewModel.Bet.SelectionName = "Chelsea";
betViewModel.Bet.Price = "4/9";
betViewModel.Bet.Market = "90 Minutes";
betViewModel.Bet.ExpectedOdd = DateTime.Now;
BetViewModels.Add(betViewModel);

我该如何关闭显示新项占位符的附加项?以下是显示占位符的图片:enter image description here

2
你展示的内容中没有任何关于你遇到问题的线索。这不是 ListBox 自身会出现的问题,所以你在使用 ItemsSource 时可能做了其他操作导致了这个问题。 - John Bowen
@ John Bowen,这是因为我们正在使用DataTemplate(如上所示)吗? - DermFrench
2
不是的。正如我所说,这与你在这里展示的任何内容都无关。你需要展示你对ItemsSource集合正在做什么。 - John Bowen
嗨John,我已经添加了ItemsSource和它所绑定的C#代码。 - DermFrench
1
你需要展示填充itemsource的代码,而不仅仅是该属性! - makim
@sine 现在已经添加了该代码(用于填充betviewmodels)。 - DermFrench
3个回答

3

3

您的代码中没有任何可以添加额外空项目的内容。可能有其他代码正在向BetViewModels添加内容,或者如果将其绑定到其他未显示的内容(例如可编辑的DataGrid),则生成的ICollectionView集合可能发生变化。


0

你的示例代码是否也提供了这个问题?

在调试中,你的_betViewModels.count包含多少项?实际上只有2项吗?

看起来你在末尾添加了一个空的BetViewModel

我建议检查一下你的逻辑,看看是如何填充你的项目的

  • 如果是循环,应该是(counter<yourDatasource.Count),仅作为示例

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接