WPFエラー:「ItemsコレクションはのItemsSourceを使用する前に、空である必要があります。」
-
23-08-2019 - |
質問
私は入れません、なぜ誰もが知っている - エラー「ItemsコレクションをのItemsSourceを使用する前に、空である必要がありますか」?
ここでは、コードは次のとおりです。
<ScrollViewer Margin="8,8,8,8" Grid.Row="3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<WrapPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding}" x:Name="CustomerList" >>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal">
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<View:UserControlCustomerDetails>
</View:UserControlCustomerDetails>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</WrapPanel>
</ScrollViewer>
これは私が私のコードビハインドに何をすべきかです。
CustomerList.ItemsSource = _mainViewModel.CustomerCollection;
> CustomerCollectionは単純なList<Customers
であることに注意してください。
あなたの助けをありがとう!
乾杯
解決
このコードはそのままコピーされていますか?あなたは本当に>>
ラインの末尾に2つの右の角括弧(<ItemsControl...
)を持っていますか?その場合、第2の右アングルブラケットは、Itemsコレクションに追加取得され、テキストコンテンツとして扱わ取得される可能性があります。
他のヒント
まず、ItemsControlからのItemsSourceは= "{}バインディング" 取り除きます。これは、私は信じているあなたのエラーを修正する必要があります。
第二に、私はあなたのWrapPanelが、この場合には期待どおりに動作しようとしているかはわかりません。それが範囲外に広がる複数の子を持っているとき私の理解から、WrapPanelはラッピングを行います。この場合、あなたのWrapPanelはわずか1子、のItemsControlを持っています。
どうやらあなたはMVVMパターンを使用しています。その場合は、明示的に代わり、あなたがItemsSource
(またはDataContext
)のWindow
へのViewModelを割り当てる必要があります... UserControl
プロパティにコレクションを割り当てるべきではありません。あなたのDataContext
が_mainViewModel
であれば、あなたの結合はする必要があります:
<ItemsControl ItemsSource="{Binding CustomerCollection}" ...
使用DataGrid.Items.Clear();
私はそれが役立つことを願っています...