我有一个包含按钮的UserControl,当单击该按钮时,会出现一个弹出菜单。但是,我希望根据特定条件使用不同的弹出菜单。我已经在UserControl中创建了一个dependency属性来确定要显示哪个弹出菜单,并创建了一个转换器来将dependency属性的值转换为相应的弹出菜单。如何从视图中更改dependency属性的值
eulz3vhy1#
最直接的方法就是修改后面代码中的MenuFlyout对象,可以根据具体情况手工修改MenuFlyout的项目。我注意到你正在转换器中创建。所以你需要做的是在转换器中创建MenuFlyoutItems。这是我做的一个简单的演示。当另一个按钮被点击后,按钮的菜单弹出会改变。
MenuFlyout
MenuFlyoutItems
Xaml:
<StackPanel> <Button x:Name="MyButton" Content="Click" > <Button.Flyout> <MenuFlyout x:Name="TestFlyout"> <MenuFlyoutItem Text="Change color" /> </MenuFlyout> </Button.Flyout> </Button> <Button Content="ChangeMenuItem" Click="MyButton_Click"/> </StackPanel>
代码隐藏:
bool testFlag= false; public MainPage() { this.InitializeComponent(); } private void MyButton_Click(object sender, RoutedEventArgs e) { if (testFlag) { GenerateItemA(); testFlag = false; } else { GenerateItemB(); testFlag = true; } } private void GenerateItemA() { // remove all the existing items TestFlyout.Items.Clear(); TestFlyout.Items.Add(new MenuFlyoutItem { Text = "Group A" }); TestFlyout.Items.Add(new MenuFlyoutItem { Text = "Group B" }); TestFlyout.Items.Add(new MenuFlyoutItem { Text = "Group c" }); } private void GenerateItemB() { // remove all the existing items TestFlyout.Items.Clear(); TestFlyout.Items.Add(new MenuFlyoutItem { Text = "Group 123" }); TestFlyout.Items.Add(new MenuFlyoutItem { Text = "Group 234" }); TestFlyout.Items.Add(new MenuFlyoutItem { Text = "Group 435" }); }
1条答案
按热度按时间eulz3vhy1#
最直接的方法就是修改后面代码中的
MenuFlyout
对象,可以根据具体情况手工修改MenuFlyout
的项目。我注意到你正在转换器中创建。所以你需要做的是在转换器中创建
MenuFlyoutItems
。这是我做的一个简单的演示。当另一个按钮被点击后,按钮的菜单弹出会改变。
Xaml:
代码隐藏: