【问题标题】:TabControl not showing content based on view model typeTabControl 不显示基于视图模型类型的内容
【发布时间】:2020-09-07 12:56:30
【问题描述】:

我有一个 TabControl,它定义了一些数据模板以根据所选选项卡显示内容。

    <TabControl 
        Grid.Row="1"
        ItemsSource="{Binding ExerciseViewModels}" 
        SelectedItem="{Binding SelectedExercise}">
        
        <TabControl.Resources>
            <DataTemplate DataType="local:SubtractExerciseViewModel">
                <local:SubtractUserControl/>
            </DataTemplate>
            <DataTemplate DataType="local:SumExerciseViewModel">
                <local:SubtractUserControl/>
            </DataTemplate>
        </TabControl.Resources>
        
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
        
    </TabControl>

但是当我运行时,选定的选项卡会显示 ViewModel 的名称(因此不使用特定类型的 DataTemplate)。

我错过了什么?

PS:使用 MvvmLight 但没有任何意义。所有视图模型显然都存在(参见屏幕截图,它引用了 SuusRekenWonder.SumExerciseViewModel 类型的对象)。所以我在 XAML 中做错了什么。但是什么?

【问题讨论】:

    标签: c# xaml mvvm


    【解决方案1】:

    在您的 TabControl-Resources 中,您必须使用 x:Type 作为您的 DataType。然后你的资源看起来像:

    <TabControl.Resources>
      <DataTemplate DataType="{x:Type local:SubtractExerciseViewModel}">
        <local:SubtractUserControl/>
      </DataTemplate>
      <DataTemplate DataType="{x:Type local:SumExerciseViewModel}">
        <local:SubtractUserControl/>
      </DataTemplate>
    </TabControl.Resources>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多