Wpf XAML不从ViewModel对象加载UserControl

Wpf XAML不从ViewModel对象加载UserControl,wpf,xaml,.net-3.5,Wpf,Xaml,.net 3.5,我有一个XAML代码,应该在TabControl中加载我的UserControl 如果我把这个XAML代码: <DataTemplate x:Key="WorkspacesTemplate"> <TabControl IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Path=Gui}" ItemTemplate="{StaticResource ClosableTabItemTemplat

我有一个XAML代码,应该在
TabControl
中加载我的
UserControl

如果我把这个XAML代码:

<DataTemplate x:Key="WorkspacesTemplate">
  <TabControl 
  IsSynchronizedWithCurrentItem="True" 
  ItemsSource="{Binding Path=Gui}"
  ItemTemplate="{StaticResource ClosableTabItemTemplate}"
  Margin="4"
  />
</DataTemplate>

你知道我如何获得
用户控件
而不是此对象引用文本吗?

你应该在app.xaml文件中创建一个viewmodel模板,如下所示

 <DataTemplate DataType="{x:Type simpleModel:TextBoxInputViewModel}">
        <myView:TextBoxInputControl />
    </DataTemplate>


其中simpleModel是TextBoxInputViewModel的命名空间,TextBoxInputControl是要显示的用户控件,myView是该用户控件的命名空间

您应该在app.xaml文件中为viewmodel创建一个模板,如下所示

 <DataTemplate DataType="{x:Type simpleModel:TextBoxInputViewModel}">
        <myView:TextBoxInputControl />
    </DataTemplate>


其中simpleModel是TextBoxInputViewModel的命名空间,TextBoxInputControl是要显示的用户控件,myView是该用户控件的命名空间

问题在于
ItemSource
是一个集合,当您将它绑定到仅为一个值的属性时。您看到的输出窗口中的错误可能与此有关


与其直接从视图模型返回
UserControl
,不如返回另一个表示选项卡内容的视图模型,并使用模板显示该内容。如果需要比根据视图模型的
类型选择模板更具动态性,请查看设置。这需要设置为派生自的类。您可以使用此类根据绑定到该选项卡的对象来决定加载哪个模板。

问题在于
ItemSource
是一个集合,当您将它绑定到一个仅为一个值的属性时。您看到的输出窗口中的错误可能与此有关


与其直接从视图模型返回
UserControl
,不如返回另一个表示选项卡内容的视图模型,并使用模板显示该内容。如果需要比根据视图模型的
类型选择模板更具动态性,请查看设置。这需要设置为派生自的类。您可以使用此类根据绑定到该选项卡的对象来决定加载哪个模板。

好的,但是TextBoxInputViewModel可能是另一个控件,它是动态的,这就是为什么我不能将其直接写入Xaml。好的,但是TextBoxInputViewModel可能是另一个控件,它是动态的,这就是为什么我不能将它直接写入Xaml。在ItemsSource=“{Binding Path=Gui}”的情况下,是否尝试在输出窗口中查找?输出窗口显示绑定错误,如果您注意到有关输出窗口的信息,该消息将非常有用。我看到“System.Windows.Data Error:32:ObjectDataProvider需要ObjectType或ObjectInstance。”但看不出它是否与此绑定相关。我认为它与该绑定无关,因为如果将绑定放在自身上,它仍然存在该错误。在ItemsSource=“{binding Path=Gui}”的情况下,是否尝试在输出窗口中查找?输出窗口显示绑定错误,如果您注意到有关输出窗口的信息,该消息将非常有用。我看到“System.Windows.Data Error:32:ObjectDataProvider需要ObjectType或ObjectInstance。”但看不出它是否与该绑定相关。我认为它与该绑定无关,因为如果我将绑定放在自身上,它仍然存在该错误。好的,今晚下班后我将从您的角度进行调查。我会让你知道它是否有效。非常感谢你,当你知道的时候,这是显而易见的。事实上,你的收藏让我很兴奋。我错得很厉害,但我没有使用DataTemplateSelector,而是在TabControl中使用ContentTemplate,并在绑定到Path=Gui的模板中使用了ContentTemplate,它成功了!谢谢好吧,今晚下班后我会从你的角度进行调查。我会让你知道它是否有效。非常感谢你,当你知道的时候,这是显而易见的。事实上,你的收藏让我很兴奋。我错得很厉害,但我没有使用DataTemplateSelector,而是在TabControl中使用ContentTemplate,并在绑定到Path=Gui的模板中使用了ContentTemplate,它成功了!谢谢
 <DataTemplate DataType="{x:Type simpleModel:TextBoxInputViewModel}">
        <myView:TextBoxInputControl />
    </DataTemplate>