【问题标题】:Listbox databinding NewItemPlaceholder列表框数据绑定 NewItemPlaceholder
【发布时间】:2015-02-28 01:53:52
【问题描述】:

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

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

这是显示占位符的图像

【问题讨论】:

  • 您在此处显示的内容中没有任何内容表明您遇到的问题。这不是 ListBox 本身发生的事情,所以您对 ItemsSource 所做的其他事情会导致这种情况。
  • @John Bowen,是不是因为我们使用了 DataTemplate(如上所示)?
  • 没有。正如我所说,它与您在此处显示的任何内容都无关。您需要展示您对 ItemsSource 集合所做的工作。
  • 嗨,John,我已经添加了 ItemsSource 和它现在绑定的 c# 代码。
  • 您还必须显示填充 itemsource 的代码,而不仅仅是属性!

标签: c# wpf xaml


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您的示例代码是否也存在此问题?

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

      您似乎在末尾添加了一个空的BetViewModel

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

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

      【讨论】:

        猜你喜欢
        • 2011-01-28
        • 2012-10-12
        • 2010-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多