在 WPF 中使用 RelativeSource FindAncestor 时出错
Error Using RelativeSource FindAncestor in WPF
我确实有一个 Window(DataContext VM)和一个 Listview(VM 中的 ItemSource 可观察列表)
数据来自一个sqlite DB,Observable List是Type of Model,代表Residents。
每个 Resident 都应该有一个“CheckIn”或“CheckOut”按钮,对于他们来说,我的 VM 中确实有 ICommands。
<ListView ItemsSource="{Binding Oc_BewohnerList}">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="Name:" Width="50"/>
<TextBlock Text="{Binding Nachname, StringFormat={}{0}\, }" FontWeight="Bold"/>
<Button Content="Check In" Command="{Binding Source={RelativeSource AncestorType={x:Type viewModels:BewohnerVM}}, Path=CheckInCommand}" CommandParameter="{Binding Id}" />
为什么我收到错误消息“Die Eigenschaft "CheckInCommand" wurde im Objekt vom Typ "RelativeSource" nicht gefunden。”未找到 CheckInCommand?
我先用 Xamarin.Forms 做了它,然后它以类似的方式工作......我自己找不到解决方案,尝试了 realtivesource 和 ancestorlevel 的大量组合......
提前致谢
那拉
可能只是一个小的语法错误而你想要(注意 RelativeSource
的双重用法,一次作为 属性 绑定一次作为 MarkupExtension...)
编辑以及 AncestorType 应该是 UIElement,其 DataContext 公开该 CheckInCommand。
<Button Content="Check In"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.(viewModels:BewohnerVM.CheckInCommand)}"
CommandParameter="{Binding Id}" />
相对源绑定在可视化树上。
就像在控件中而不是视图模型中一样。
您不会寻找视图模型。
如果命令是 VM 上的 属性 并且这是 window 的数据上下文,则 ListView 会继承该数据上下文。
您没有解释所有内容,但我认为您需要更多信息:
<Button Content="Check In"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}},
Path=DataContext.CheckInCommand}"
CommandParameter="{Binding Id}" />
我确实有一个 Window(DataContext VM)和一个 Listview(VM 中的 ItemSource 可观察列表) 数据来自一个sqlite DB,Observable List是Type of Model,代表Residents。 每个 Resident 都应该有一个“CheckIn”或“CheckOut”按钮,对于他们来说,我的 VM 中确实有 ICommands。
<ListView ItemsSource="{Binding Oc_BewohnerList}">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="Name:" Width="50"/>
<TextBlock Text="{Binding Nachname, StringFormat={}{0}\, }" FontWeight="Bold"/>
<Button Content="Check In" Command="{Binding Source={RelativeSource AncestorType={x:Type viewModels:BewohnerVM}}, Path=CheckInCommand}" CommandParameter="{Binding Id}" />
为什么我收到错误消息“Die Eigenschaft "CheckInCommand" wurde im Objekt vom Typ "RelativeSource" nicht gefunden。”未找到 CheckInCommand?
我先用 Xamarin.Forms 做了它,然后它以类似的方式工作......我自己找不到解决方案,尝试了 realtivesource 和 ancestorlevel 的大量组合......
提前致谢 那拉
可能只是一个小的语法错误而你想要(注意 RelativeSource
的双重用法,一次作为 属性 绑定一次作为 MarkupExtension...)
编辑以及 AncestorType 应该是 UIElement,其 DataContext 公开该 CheckInCommand。
<Button Content="Check In"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.(viewModels:BewohnerVM.CheckInCommand)}"
CommandParameter="{Binding Id}" />
相对源绑定在可视化树上。 就像在控件中而不是视图模型中一样。 您不会寻找视图模型。 如果命令是 VM 上的 属性 并且这是 window 的数据上下文,则 ListView 会继承该数据上下文。
您没有解释所有内容,但我认为您需要更多信息:
<Button Content="Check In"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}},
Path=DataContext.CheckInCommand}"
CommandParameter="{Binding Id}" />