我有一个可观察的集合绑定到列表框。 该集合有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);
如何切换此项以显示新项目位置的附加项目
以下是显示占位符的图像
答案 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)
只是例如