Listbox数据绑定NewItemPlaceholder

时间:2013-03-06 14:28:35

标签: c# wpf xaml

我有一个可观察的集合绑定到列表框。 该集合有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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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

似乎你在结尾处添加了一个空的BetViewModel

我建议检查你的逻辑,它提供填充你的物品

  • 如果它是一个循环,它应该(counter<yourDatasource.Count)只是例如