我有一个正确填充对象数组的ListBox
。这是使用DataType
设置为我的对象的DataTemplate
和带有"Text="{绑定名称}"的TextBlock
。这工作正常,我在填充它时没有问题。
我的问题是我似乎以同样的方式填充ComboBox
。我将DataType
和{Binding Name}
(设置为与ListBox
不同的对象类型。视图模型结构和代码隐藏绑定对于每个模型都非常相似。我花了很长时间试图弄清楚如何让它填充。
我还使用 MaterialDesignInXAML 作为带有Style="{StaticResource MaterialDesignFloatingHintComboBox}"
的 ComboBox。我认为这无关紧要,只是在这里添加以防万一。
我已经研究了一些问题,答案应该涵盖这一点,但我似乎无法让它工作。
https://stackoverflow.com/a/56782702/9452665
https://stackoverflow.com/a/45133895/9452665
以下是相关的ListBox
代码:
<ListBox x:Name="NavigationItemsListBox" Margin="0 16 0 16" SelectedIndex="0">
<ListBox.Resources>
<Style TargetType="ScrollBar" BasedOn="{StaticResource MaterialDesignScrollBarMinimal}" />
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate DataType="model:NavigationItem">
<TextBlock Text="{Binding Name}" Margin="32 0 32 0" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
this.OneWayBind(ViewModel,
viewModel => viewModel.NavigationItems,
view => view.NavigationItemsListBox.ItemsSource)
.DisposeWith(disposableRegistration);
MainWindowViewModel
有一个NavigationItem
数组。
以下是相关的ComboBox
代码:
<ComboBox Name="DataTypeComboBox" Style="{StaticResource MaterialDesignFloatingHintComboBox}" materialDesign:HintAssist.Hint="Data Type" Width="300" HorizontalAlignment="Left" Margin="8">
<ComboBox.ItemTemplate>
<DataTemplate DataType="models:DatasheetType">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
this.OneWayBind(ViewModel,
viewModel => viewModel.DatasheetTypeItems,
view => view.DataTypeComboBox.ItemsSource)
.DisposeWith(disposableRegistration);
DataImportViewModel
有一个DatasheetType
数组。
尝试了很多东西,但似乎无法让ComboBox
实际显示其中的任何项目。
问题是没有将 ViewModel 分配给托管 ComboBox 的用户控件代码隐藏中的视图模型。添加作业后,它可以工作。
ViewModel = new DataImportViewModel();