将UserControl的DataContext绑定到我的主ViewModel中的属性

时间:2019-07-18 15:19:02

标签: c# wpf xaml viewmodel

使用MVVM Light,将UserControl的DataContext绑定到主ViewModel中的ViewModel属性时,UI不会反映任何内容。

在堆栈溢出中找到许多其他答案后,我找到了对子组件的ViewModel的引用,接着我在主ViewModel中创建了一个对子组件的ViewModel的引用的属性。然后,我尝试将子组件的DataContext绑定到此属性,但是它不起作用。

当我将子组件的xaml中的DataContext或后面的代码分配给ViewModel的新实例时,它将起作用。

主视图的xaml(省略顶部):

        <mah:HamburgerMenu.ItemsSource>
            <mah:HamburgerMenuItemCollection>
                <mah:HamburgerMenuIconItem Label="Test">
                    <mah:HamburgerMenuIconItem.Tag>

                        <UserControl>
                            <Controls:IntegrationView DataContext="{Binding IntegrationViewModel}"/>
                        </UserControl>

                    </mah:HamburgerMenuIconItem.Tag>
                </mah:HamburgerMenuIconItem>
            </mah:HamburgerMenuItemCollection>
        </mah:HamburgerMenu.ItemsSource>

子组件的xaml(省略顶部):

<StackPanel>
   <Label Content="{Binding Text}" />
</StackPanel>

MainViewModel.cs:

public class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        ChildViewModel = new ChildViewModel();
    }

    public ChildViewModel ChildViewModel { get; set; }
}

ChildViewModel.cs:

public class ChildViewModel : ViewModelBase
{
    private string _text = "Testing string";

    public ChildViewModel()
    {
    }

    public string Text
    {
        get => _text;
        set => Set(() => Text, ref _text, value);
    }
}

我希望测试字符串能够反映在UI上,但是以这种方式设置DataContext时不会。

0 个答案:

没有答案