WPF ReactiveUI ListBox 填充绑定的 ItemsSource,但 ComboBox 不填充



我有一个正确填充对象数组的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();

相关内容

  • 没有找到相关文章

最新更新