wpf Content和DataContext可以同时通过Binding工作吗?

toiithl6  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(114)

我正在使用(MainViewModel.cs)中的类属性在运行时加载MainView.xaml页面中的视图和ViewModel。
我没有对包含我的视图和视图模型(BaseModuleView,BaseModuleViewModel)的项目的直接引用
我已经从资源字典中获得了这个视图和视图模型,并将它们加载到我的类属性中
如果我只绑定Content,视图加载,但我绑定视图和ViewModel,那么页面什么也不显示。
这是我的代码
这是我的主视图

<UserControl 
    x:Class="namespace.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:namespace"
    d:DataContext="{d:DesignInstance Type=local:MainViewModel, IsDesignTimeCreatable=False}"
    mc:Ignorable="d" \>

    <TabControl 
        TabStripPlacement="Top"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        SelectedIndex="0"\>

        <TabItem 
            Header="Base" 
            Content="{Binding BaseModuleView}" 
            DataContext="{Binding BaseModuleViewModel}" />

    </TabControl\>
</UserControl\>

字符串

  • 我尝试只绑定视图(Content="{Binding BaseView}"),然后它工作
  • 我试图只绑定ViewModel(DataContext="{Binding BaseViewModel}")它的作品

但如果同时对ContetDataContext使用Binding,则不起作用。
如果你有什么想法或建议让我试试,那会很有帮助的

qni6mghb

qni6mghb1#

我找到了我问题的答案。我在这里张贴它,如果有人发现它有帮助
1.我们可以将DataContext绑定到类本身中的View属性。
1.然后加载已经与MainView.xaml文件中相应ViewModel绑定的View属性
MainViewModel.cs中的我的类属性

public UserControl BaseModuleView { get; private set; }

字符串
将View和ViewModel加载到您的属性中,如下所示

this.BaseModuleView = (UserControl)mybaseModuleView;
this.BaseModuleView.DataContext = myBaseModuleViewModel;


xaml看起来像这样

<TabControl>
<TabItem x:Name="BaseTabItem" Header="Base" Content="{Binding BaseModuleView}" />
</TabControl>

相关问题