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 に追加されている可能性があります。または、編集可能な DataGrid など、表示されていない他のものにバインドされている場合、コレクション用に生成された ICollectionView に変更が発生している可能性があります。

于 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 に答える