gpt4 book ai didi

c# - WPF Caliburn.Micro ItemsControl ContextMenu 找不到方法

转载 作者:行者123 更新时间:2023-12-01 18:55:25 33 4
gpt4 key购买 nike

我在使用 Caliburn.Micro 的 ContextMenu 时确实遇到了一些问题。无论我做什么,我都会收到错误“无法找到该方法...”。

我已经尝试过this solutions ,和that one我也是,但我无法让它发挥作用。

我做错了什么?实际上,有一种方法可以调试 View 并找出控件在哪个上下文中搜索相应的 ViewModel?

还有一件事...这个 View 位于另一个 View 的 DataTemplate 内部,这会改变什么吗?所有其他绑定(bind)都在正确的 ViewModel 中工作...

<ScrollViewer VerticalScrollBarVisibility="Auto"  
HorizontalScrollBarVisibility="Disabled"
Grid.Row="1" Grid.Column="0"
Padding="10,5,15,5"
MaxHeight="390" x:Name="xImages">
<ItemsControl
ItemsSource="{Binding Path=Document.Images}"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Height="110">
<Border Margin="5" BorderBrush="Gainsboro" BorderThickness="1">
<Image Source="{Binding Path=PathThumb}" Width="70" Height="100"> <!-- Tag="{Binding DataContext, ElementName=xImagens}" -->
<Image.ContextMenu>
<ContextMenu
cal:Action.TargetWithoutContext="{Binding DataContext, ElementName=xImagens}"> <!--PlacementTarget.Tag, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"-->
<MenuItem Header="Ampliar"
cal:Message.Attach="[Event Click] = [Action ExpandImage($datacontext)]"></MenuItem>
<MenuItem Header="Excluir"
cal:Message.Attach="[Event Click] = [Action DeleteImage($datacontext)]"></MenuItem>
</ContextMenu>
</Image.ContextMenu>
</Image>
</Border>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>

最佳答案

 cal:Action.TargetWithoutContext="{Binding Source={x:Reference xImagens} , Path=DataContext}">

因为 ContextMenu 不是 VisualTree 的一部分,所以您无法绑定(bind)到可视树中的元素它的TargetPlacement。 (尽管在 XAML 中它似乎是其中的一部分)。

你有两个选择:

   {Binding Path=PlacementTarget.DataContext}

或者:

   {Binding Source={x:Reference xImagens}, Path=DataContext}

关于c# - WPF Caliburn.Micro ItemsControl ContextMenu 找不到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611727/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com