MenuFlyoutItem 绑定的 Command 不触发

Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 32,471 信誉分 Microsoft 供应商
2024-08-06T01:45:26.76+00:00

你好

 

为什么 MenuFlyoutItem 中的 Command 不会触发?

 


<DataTemplate> <Label Text="{Binding Name}" VerticalTextAlignment="Center"

 

ToolTipProperties.Text="{Binding}"  >

 

     <FlyoutBase.ContextFlyout>

 

         <MenuFlyout>

 

             <MenuFlyoutItem Text="New Folder"

 

                     Command="{Binding NewFolderCommand}"/>

 

             <MenuFlyoutItem Text="Rename Folder"

 

                 Command="{Binding RenameFolderCommand}"/>

 

             <MenuFlyoutItem Text="Delete Folder"

 

                 Command="{Binding DeleteFolderCommand}"/>

 

         </MenuFlyout>

 

     </FlyoutBase.ContextFlyout>

 

</Label> </DataTemplate>

 

谢谢

 

此问题整理于:https://learn.microsoft.com/en-us/answers/questions/1851458/menuflyoutitem-commands-not-fire

 

.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
90 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 44,016 信誉分 Microsoft 供应商
    2024-08-06T01:46:15.7866667+00:00

    你好,

    我注意到您使用了 DataTemplate,这意味着此项目应来自 CollectionView 。在 CollectionView 中,子项只能包含 ItemSource 中的项,不能直接调用 ViewModel 中的命令。

    例如,绑定到 CollectionView 的列表是 Models。如果 Model 类只有 NameDesc 属性,则子项只能将这些属性用作绑定项。

    解决方法是通过相对绑定再次将 Command 绑定到 ViewModel 以使用 Command。请参考以下代码和文档。

    <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
     
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
     
                 xmlns:local="clr-namespace:MauiApp5"
     
                 x:Class="MauiApp5.MainPage">
     
    <ContentPage.BindingContext>
     
    <local:ClockViewModel/>
     
    </ContentPage.BindingContext>
     
    <CollectionView ItemsSource="{Binding Models}">
     
    	<CollectionView.ItemTemplate>
     
    		<DataTemplate>
     
    			<Label Text="{Binding Name}" VerticalTextAlignment="Center" 					ToolTipProperties.Text="{Binding}" >
     
    			<FlyoutBase.ContextFlyout>
     
    				<MenuFlyout>
     
    					<MenuFlyoutItem Text="{Binding Description}"
     
    						Command="{Binding Source={RelativeSource AncestorType={x:Type local:ClockViewModel}}, Path=NewFolderCommand}"/>
     
    				</MenuFlyout>
     
    			</FlyoutBase.ContextFlyout>
     
    			</Label>
     
    		</DataTemplate>
     
    	</CollectionView.ItemTemplate>
     
    </CollectionView>
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。