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);

如何从显示新项目位置的附加项目切换此选项

这是显示占位符的图像

在此处输入图像描述

4

3 回答 3

3

您的代码中没有任何内容应该添加额外的空项。可能有一些其他代码添加到 BetViewModels,或者如果您将生成的 ICollectionView 绑定到您未显示的其他内容(例如可编辑的 DataGrid),则该集合可能会发生更改。

于 2013-03-07T02:24:32.550 回答
3

DataGrid 支持添加必须从空白开始的新行。如果您的 ItemsSource 绑定到 ListBox/ItemsControl 和 DataGrid,则需要将 DataGrid 的“CanUserAddRows”属性设置为“False”。

我在哪里找到答案: http: //www.mindstick.com/Forum/1519/How%20do%20I%20remove%20a%20listbox%20new%20item%20placeholder

于 2015-02-27T17:53:52.303 回答
0

您的示例代码是否也提供了此问题?

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

看来您BetViewModel在末尾添加了一个空白

我建议检查你的逻辑,它提供填充你的项目

  • 如果它是一个循环,它应该(counter<yourDatasource.Count)只是例如
于 2013-03-11T14:05:19.093 回答