使用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时不会。