Wpf MVVM中没有静态资源的RelativeSource FindAncestor?
我是WPF和MVVM模式的新手,所以我的绑定有一些问题 在客户的详细信息视图中,我想在组合框中列出一些状态 在我的ViewModel中,客户处于根级别,状态列表也处于根级别 使用静态资源时,我可以使用:Wpf MVVM中没有静态资源的RelativeSource FindAncestor?,wpf,mvvm,combobox,binding,Wpf,Mvvm,Combobox,Binding,我是WPF和MVVM模式的新手,所以我的绑定有一些问题 在客户的详细信息视图中,我想在组合框中列出一些状态 在我的ViewModel中,客户处于根级别,状态列表也处于根级别 使用静态资源时,我可以使用: ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type StackPanel}}, Path=DataContext.PartGruppAll}" 在我的组合框上,但是当我从
ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type StackPanel}}, Path=DataContext.PartGruppAll}"
在我的组合框上,但是当我从代码隐藏中设置DataContext时,它不起作用,我做错了什么,在我看来这应该没有什么区别
致以最良好的祝愿,
彼得·拉森这并不是因为你可能有拼写错误
Path=DataContext.PartGruppAll
可能应该是
Path=DataContext.PartGroupAll
哦,还有一件事
如果StackPanel与组合框位于同一个可视树上,则不需要在绑定中找到它
ItemsSource="{Binding PartGruppAll}"
应该可以在可视化树上搜索DataCoxtext。我将尝试向您提供更多详细信息,viewmodel非常大,因此我将尝试缩短它 我在App.xaml的代码隐藏中实例化了viewmodel
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
PartWindow pw = new PartWindow();
var PartViewModel = new ViewModel.PartWindowViewModel();
pw.DataContext = PartViewModel;
pw.Show();
}
然后在我的页面中,我将数据绑定到stackpanel:
<StackPanel DataContext="{Binding Path=PartViewModel}">
然后,通过绑定到Customer属性SelectedPart,在网格中显示客户
<Grid DataContext="{Binding SelectedPart}" Margin="5" Grid.Column="0">
我的viewModel如下所示:
ViewModelClass
- 选定部分
- 状态列表
没什么复杂的,我想。。。网格与选定的客户绑定,这就是问题所在 在绑定中,尝试将AncestorType设置为视图类。差不多
ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type vw:MyView}}, Path=DataContext.PartGruppAll}"
其中,vw是保存视图的命名空间,MyView是视图类本身的名称
在我的申请表中,我这样声明了大众汽车
xmlns:vw="clr-namespace:MyApp.View"
(您可能不需要这一点,但我包括了just-in-case=)也许还可以给我们提供viewmodel代码。这可能会有帮助不,对不起,这个名字中有瑞典语的一部分,正确的名字实际上是PartGruppAll.:)好的,不用担心。。。这只是一种预感