【问题标题】:ButtonClick to get an Object on SelectionChanged event按钮单击以获取选择更改事件上的对象
【发布时间】:2013-12-03 19:56:09
【问题描述】:

我有一个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.  
}

如果你也能告诉我如何将对象作为参数传递就完美了。

【问题讨论】:

  • sCar 设为类级变量,然后单击按钮即可访问它。
  • 添加一个答案来评价这个如果它有效。

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


【解决方案1】:

你也可以通过绑定来做到这一点

1.将ListBoxItem(Carro Object)绑定到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

【讨论】:

  • 好的,但是我在 App.xaml 文件中声明了一个 car 类型的变量,它变成了一个可以在应用程序和文件中的任何位置使用的变量。然后完美地使它成为上面的答案,无论如何,你的方式也有效!
【解决方案2】:

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

请注意,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"
}

【讨论】:

  • 这是一个好的做法吗?如何将带参数的对象传递到另一个页面?
  • 显然这要求选择更改和按钮单击方法都在同一个类中。这是一个很好的做法,但如果您需要传递变量,那么我需要更好地了解您的架构
  • 如下,事件在我的主页上,但我想选择此页面列表中的项目之一,因此编辑按钮被解锁,完成。但是编辑页面是另一个页面,所以,我需要将此对象作为参数传递给另一个页面,以便能够写入新数据。是这个吗?
  • 您何时以及如何(都需要回答这两个问题)实例化新页面?在新页面中创建一个接受sCar 作为参数的构造函数将是处理该问题的方法。
猜你喜欢
  • 2011-03-21
  • 2019-08-23
  • 2020-03-16
  • 2015-10-14
  • 2013-07-19
  • 1970-01-01
  • 2021-09-23
  • 2018-12-18
  • 1970-01-01
相关资源
最近更新 更多