C# 如何在我的click事件中更改atribute?

C# 如何在我的click事件中更改atribute?,c#,events,windows-phone-7,click,C#,Events,Windows Phone 7,Click,我有一个网格列表,每个网格中有两个按钮。其中一个按钮是“删除”按钮,因此我需要将colitor发送到我的单击事件,以将其更改为“删除”。如何将我的Coletor传递给我的点击事件 创建轴网的方法: protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { if (NavigationContext.QueryString["email"] != null

我有一个网格列表,每个网格中有两个按钮。其中一个按钮是“删除”按钮,因此我需要将
colitor
发送到我的单击事件,以将其更改为“删除”。如何将我的
Coletor
传递给我的点击事件

创建轴网的方法:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        if (NavigationContext.QueryString["email"] != null)
        {
            email = NavigationContext.QueryString["email"];
        }

        List<Grid> listaGrids = new List<Grid>();

        int i = 0;

        AppDataContext db = new AppDataContext();

        Pessoa pessoa = db.Pessoas.Single(c => c.Email == email);

        foreach (Coletor coletor in pessoa.Coletores)
        {
            if (coletor.Ativado == true)
            {
                Grid aux = new Grid();
                ColumnDefinition c1 = new ColumnDefinition();
                ColumnDefinition c2 = new ColumnDefinition();
                ColumnDefinition c3 = new ColumnDefinition();

                aux.Width = 440;
                aux.Height = 80;

                aux.VerticalAlignment = VerticalAlignment.Center;

                c1.Width = new System.Windows.GridLength(220);
                c2.Width = new System.Windows.GridLength(80);
                c3.Width = new System.Windows.GridLength(80);



                coletorAux = coletor;

                aux.ColumnDefinitions.Add(c1);
                aux.ColumnDefinitions.Add(c2);
                aux.ColumnDefinitions.Add(c3);

                RowDefinition r1 = new RowDefinition();

                aux.RowDefinitions.Add(r1);

                HyperlinkButton aux2 = new HyperlinkButton();
                aux2.Content = coletor.Nome;
                aux2.FontSize = 42;
                aux2.NavigateUri = new Uri("/OcorrenciasPage.xaml?coletorId=" + coletor.Id.ToString(), UriKind.RelativeOrAbsolute);
                i++;

                Button btnEdit = new Button();

                var brush = new ImageBrush();

                brush.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri("/icons/edit.png", UriKind.RelativeOrAbsolute));

                btnEdit.Background = brush;

                btnEdit.Width = 80;
                btnEdit.Height = 80;

                btnEdit.Click += btnEdit_Click;

                Button btnDelete = new Button();

                ImageBrush brush2 = new ImageBrush();

                brush2.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri("/icons/delete.png", UriKind.RelativeOrAbsolute));

                btnDelete.Background = brush2;

                btnDelete.Width = 80;
                btnDelete.Height = 80;

                btnDelete.Click += btnDelete_Clickrr;

                Grid.SetColumn(aux2, 0);
                Grid.SetColumn(btnEdit, 1);
                Grid.SetColumn(btnDelete, 2);
                Grid.SetRow(aux2, 0);
                Grid.SetRow(btnEdit, 0);
                Grid.SetRow(btnDelete, 0);



                aux.Children.Add(aux2);
                aux.Children.Add(btnEdit);
                aux.Children.Add(btnDelete);

                listaGrids.Add(aux);
            }
        }

        ListBox coletores = new ListBox();
        coletores.ItemsSource = listaGrids;
        stcList.Children.Add(coletores);

        base.OnNavigatedTo(e);
    }

您可以将colator分配给按钮的Tag属性

btnDelete.Tag = coletor;
然后在事件中重新获得:

var coletor = ((sender as Button).Tag as Coletor);

它有点笨重,但可以工作。

给按钮一个属性

//after creating the button
btnDelete.Attributes.Add('coletorId', coletorId.ToString());
…在发件人上恢复您需要的信息

//inside btnDelete_Click
Button btnDelete = (Button) sender;
string attr = btnDelete.Attributes['coletorId'];
Guid id = Guid.Parse(attr);
Coletor = db.Coletores.SingleOrDefault(p => p.id == id);

.NEt API可能是错误的,但我认为总体思路是正确的。

你的问题真的很难理解。我假设您要删除(列表?网格?其他内容?)中的选定项并将其删除,这样您就不必向按钮传递任何内容,只需检查选中的元素。Tag属性的一个常见用途是存储与控件密切相关的数据。例如,如果您有一个显示客户信息的控件,则可以将包含客户订单历史记录的数据集存储在该控件的标记属性中,以便快速访问数据@MVCD:我发现标签中的数据有点“匿名”。他们没有解释他们是什么,你必须知道。如果出现不同的编码员,他们可能会意外地将标签用于其他用途。但使用它们并没有错。我猜是个人选择和环境。:)但我唯一能想到的另一种方式是我回答的问题,这属于同一个问题,但会对HTML产生争议,更糟糕的是,这就是为什么我投票支持你的答案;解决方案就是解决方案。我只是有点强迫症的“挂断”关于代码是自解释的。但是,对我来说不幸的是,这并不总是一个选择。谢谢你的支持投票
//inside btnDelete_Click
Button btnDelete = (Button) sender;
string attr = btnDelete.Attributes['coletorId'];
Guid id = Guid.Parse(attr);
Coletor = db.Coletores.SingleOrDefault(p => p.id == id);