我的App.xaml中有一个MenuFlyout:
<Application.Resources>
<MenuFlyout x:Key="LessonFlyout">
<MenuFlyoutItem Text="Edit"/>
<MenuFlyoutItem Text="Delete"/>
</MenuFlyout>
</Application.Resources>
我想给MenuFlyoutItem点击事件,但编译器说我不能这样做。但我需要一个click事件,所以我搜索并发现我可以将命令绑定到MenuFlyoutItem。
我的MenuFlyout将附加到不同页面中的不同对象。例如:
StackPanel thisSender = sender as StackPanel;
FlyoutBase.SetAttachedFlyout(thisSender, Application.Current.Resources["LessonFlyout"] as MenuFlyout);
FlyoutBase.ShowAttachedFlyout(thisSender);
所以当我点击MenuFlyoutItem时我需要调用我的函数。那我该怎么做呢?
同样快速的问题,在关于MenuFlyout的官方微软页面中,有人说MenuFlyoutItem有一个Icon属性,但在我的情况下,我没有它,VS说它有一个错误。
The member "Icon" is not recognized or is not accessible.
The property 'Icon' was not found in type 'MenuFlyoutItem'.
答案 0 :(得分:3)
对于不同网页中的不同对象,MenuFlyoutItem
及其Command
会有所不同,因此通常我们不会将MenuFlyout
放入Application.Resources
。但是,如果您可以确保不同MenuFlyoutItem
中使用的Page
相同,那么以下内容可能是您的解决方案。
首先,在 App.xaml 中,为Binding
设置Command
:
<Application.Resources>
<MenuFlyout x:Key="LessonFlyout">
<MenuFlyoutItem Text="Edit" Command="{Binding EditCommand}" />
<MenuFlyoutItem Text="Delete" Command="{Binding DeleteCommand}" />
</MenuFlyout>
</Application.Resources>
然后像官方样本中的ICommand Interface一样实施RelayCommand.cs。
在此之后,我们需要在视图模型中实现EditCommand
和DeleteCommand
,以便绑定可以正常工作。例如:
public class ViewModel
{
public ICommand EditCommand { get; set; }
public ICommand DeleteCommand { get; set; }
public ViewModel()
{
EditCommand = new RelayCommand(() =>
{
//TODO
System.Diagnostics.Debug.WriteLine("EditCommand");
});
DeleteCommand = new RelayCommand(() =>
{
//TODO
System.Diagnostics.Debug.WriteLine("DeleteCommand");
});
}
}
然后附上MenuFlyout
,如:
StackPanel thisSender = sender as StackPanel;
thisSender.DataContext = new ViewModel();
FlyoutBase.SetAttachedFlyout(thisSender, Application.Current.Resources["LessonFlyout"] as MenuFlyout);
FlyoutBase.ShowAttachedFlyout(thisSender);
此处使用的ViewModel
仅作为示例,通常您应该拥有网页的视图模型,如果是这样,则在附加DataContext
时无需设置MenuFlyout
。在页面的视图模型中设置EditCommand
和DeleteCommand
应该足够了。
出现以下错误:
会员&#34; Icon&#34;无法识别或无法访问 物业&#39; Icon&#39;在类型&#39; MenuFlyoutItem&#39;中找不到。
这是因为您的项目的目标是 Build 15063 之前的版本。在Icon属性中,我们可以找到其他功能和要求,表明此属性是在 Windows 10 Creators Update(v10.0.15063.0)中引入的。因此,要使用此属性,请确保您的目标是Build 15063或更高版本。