按钮单击以在SelectionChanged事件上获取对象

时间:2013-12-03 19:56:10

标签: c# windows-phone-7 uri parameter-passing selectionchanged

我有一个SelectionChanged事件并且工作得很好,但是我想知道如何通过点击按钮来“捕获”这个所选项目,他们需要将其作为参数传递给另一个页面并编辑此项目。这是我仍然实现的当前代码和按钮SelectionChanged,因为这是我需要的。

private void listCarros_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        ListBox listBox = sender as ListBox;

        if (listBox != null && listBox.SelectedItem != null)
        {
            //pega o Carro que foi selecionado
            Carro sCar = (Carro)listBox.SelectedItem;

            btnEditCar.IsEnabled = true;
            btnDeleteCar.IsEnabled = true;
        }
        else
        {
            btnEditCar.IsEnabled = false;
            btnDeleteCar.IsEnabled = false;
        }
    }

我需要在此按钮上编辑selectedItem:

private void btnEditCar_Click(object sender, EventArgs e)
{
    //Here I need access to the selectedItem on SelectionChanged event.  
}

如果您也可以告诉我如何传递对象,因为参数将是完美的。

2 个答案:

答案 0 :(得分:3)

  

您也可以使用绑定

来执行此操作      

1.将ListBoxItem(Carro对象)绑定到xaml中的“btnEditCar”标记。

     

Xaml应该是这样的

<Button Name="btnEditCar" OnClick="btnEditCar_Click" Tag="{Binding}"/>

现在在

private void btnEditCar_Click(object sender, EventArgs e)
{
    Carro sCar=(Carro)((sender as FrameworkElement).Tag)
}

这是一个很好的做法,只为临时目的创建一个类变量是hack

答案 1 :(得分:1)

更好地了解我的评论。创建一个类级变量是这样的:

请注意,sCar在方法之外声明,但在类中声明。

Carro sCar = new Carro();
private void listCarros_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    ListBox listBox = sender as ListBox;
    if (listBox != null && listBox.SelectedItem != null)
    {
        sCar = (Carro)listBox.SelectedItem;

...

private void btnEditCar_Click(object sender, EventArgs e)
{
    sCar.ProperyYouWantToChange = "Stuff I want to change"
}