C# 获取启动弹出按钮的按钮

C# 获取启动弹出按钮的按钮,c#,xaml,win-universal-app,C#,Xaml,Win Universal App,我有一个GridView,里面有一个按钮和一个弹出按钮。在MenuFlyoutItems上有两个方法,我需要知道调用弹出按钮的按钮属性。有办法吗? 我的代码: <Button Content="{x:Bind Text}" Name="{x:Bind Id}"> <Button.Flyout> <MenuFlyout Placement="Bottom"> <Men

我有一个GridView,里面有一个按钮和一个弹出按钮。在MenuFlyoutItems上有两个方法,我需要知道调用弹出按钮的按钮属性。有办法吗?
我的代码:

<Button Content="{x:Bind Text}" Name="{x:Bind Id}">
         <Button.Flyout>
              <MenuFlyout Placement="Bottom">
                      <MenuFlyoutItem Text="Remove" Click="Remove_Click" />
                      <MenuFlyoutSeparator/>
                      <MenuFlyoutItem Text="Select" Click="Select_Click"/>
              </MenuFlyout>
        </Button.Flyout>
</Button>

对不起,我不能确定,但您可以这样尝试:

        private void Remove_Click(object sender, RoutedEventArgs e)
    {
        MenuFlyoutItem mfi = (MenuFlyoutItem)sender;
        var datacontext = mfi.DataContext;
        Button item = grd.ContainerFromItem(datacontext) as Button;
    }

其中grd是您的GridView的名称

对不起,我不能确定,但您可以这样尝试:

        private void Remove_Click(object sender, RoutedEventArgs e)
    {
        MenuFlyoutItem mfi = (MenuFlyoutItem)sender;
        var datacontext = mfi.DataContext;
        Button item = grd.ContainerFromItem(datacontext) as Button;
    }

其中grd是GridView的名称

ContainerFromItem
return
GridViewItem
。可以使用VisualTreeHelper获取按钮元素

   private void Remove_Click(object sender, RoutedEventArgs e)
    {
        MenuFlyoutItem mfi = (MenuFlyoutItem)sender;
        var datacontext = mfi.DataContext;
        GridViewItem item = grd.ContainerFromItem(datacontext) as GridViewItem ;
        Button button = FindElementInVisualTree<Button>(item);
    }
 private T FindElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject
        {
            var count = VisualTreeHelper.GetChildrenCount(parentElement);
            if (count == 0) return null;

            for (int i = 0; i < count; i++)
            {
                var child = VisualTreeHelper.GetChild(parentElement, i);
                if (child != null && child is T)
                    return (T)child;
                else
                {
                    var result = FindElementInVisualTree<T>(child);
                    if (result != null)
                        return result;
                }
            }
            return null;
        }
private void Remove\u单击(对象发送方,路由目标)
{
MenuFlyoutItem mfi=(MenuFlyoutItem)发送方;
var datacontext=mfi.datacontext;
GridViewItem=grd.ContainerFromItem(datacontext)作为GridViewItem;
按钮按钮=FindElementInVisualTree(项目);
}
私有T FindElementInVisualTree(DependencyObject parentElement),其中T:DependencyObject
{
var count=VisualTreeHelper.GetChildrenCount(parentElement);
if(count==0)返回null;
for(int i=0;i
ContainerFromItem
返回
GridViewItem
。可以使用VisualTreeHelper获取按钮元素

   private void Remove_Click(object sender, RoutedEventArgs e)
    {
        MenuFlyoutItem mfi = (MenuFlyoutItem)sender;
        var datacontext = mfi.DataContext;
        GridViewItem item = grd.ContainerFromItem(datacontext) as GridViewItem ;
        Button button = FindElementInVisualTree<Button>(item);
    }
 private T FindElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject
        {
            var count = VisualTreeHelper.GetChildrenCount(parentElement);
            if (count == 0) return null;

            for (int i = 0; i < count; i++)
            {
                var child = VisualTreeHelper.GetChild(parentElement, i);
                if (child != null && child is T)
                    return (T)child;
                else
                {
                    var result = FindElementInVisualTree<T>(child);
                    if (result != null)
                        return result;
                }
            }
            return null;
        }
private void Remove\u单击(对象发送方,路由目标)
{
MenuFlyoutItem mfi=(MenuFlyoutItem)发送方;
var datacontext=mfi.datacontext;
GridViewItem=grd.ContainerFromItem(datacontext)作为GridViewItem;
按钮按钮=FindElementInVisualTree(项目);
}
私有T FindElementInVisualTree(DependencyObject parentElement),其中T:DependencyObject
{
var count=VisualTreeHelper.GetChildrenCount(parentElement);
if(count==0)返回null;
for(int i=0;i
不要将其强制转换为按钮。如果我没有错,我希望ContainerFromItem返回GridViewItem。检查一下,让我知道是的,可能吧。不幸的是,我现在不能检查。“希望”为你指明了正确的方向。它并没有,演员是需要的,否则会产生错误。不要把它投给巴顿。如果我没有错,我希望ContainerFromItem返回GridViewItem。检查一下,让我知道是的,可能吧。不幸的是,我现在不能检查。希望为你指明了正确的方向。它没有,需要演员阵容,否则会产生错误。