将c#ListBox项传递给方法

时间:2011-02-15 22:41:54

标签: c# silverlight silverlight-3.0

这里的小编程问题,希望有人可以指出我正确的方向。

我在WP7页面上使用了一个列表。 (Silverlight ListBox)。

我的列表由XML文件填充。每个List项目都有三个文本框,按照下面的代码填充。

我需要将一个选定的ListBox项目作为文本传递给以下方法来填充电话号码。

这是我的c#代码,它填充了列表框,然后填充了phonecall方法。

private void planning(object sender, ManipulationStartedEventArgs e)
    {
        XElement _xml = XElement.Load("contacts/contacts.xml");
           {
            contacts.Items.Clear();
            foreach (XElement value in _xml.Elements("channel").Elements("item"))
            {
                ContactsItem _item = new ContactsItem();
                _item.Title = value.Element("title").Value;
                _item.Web = value.Element("web").Value;
                _item.Phone = value.Element("phone").Value;

                contacts.Items.Add(_item);
             }
           }

    }

  private void phone_number(object sender, MouseButtonEventArgs e)
    {

        Microsoft.Phone.Tasks.PhoneCallTask phonecall = new Microsoft.Phone.Tasks.PhoneCallTask();
        phonecall.PhoneNumber = //value here
        phonecall.Show();

    }

随同我的课程:

 public class ContactsItem
{
    private string _title;
    private string _web;
    private string _phone;

    public string Title
    {
        get { return _title; }
        set { _title = value; }
    }
//etc etc....

这个想法是,当你点击列表框中绑定的“电话”文本时,它会将该值传递给phonecall方法。单击带有电话号码的文本框时,会调用该phone_number方法。

希望你理解。非常感谢。

2 个答案:

答案 0 :(得分:0)

DataContext方法中查看发件人的phonecall属性(您可能需要进行某种类型转换)(我的意思是处理ListBoxItem点击事件的处理程序)。如果ListBox被正确绑定,则ContactsItem将是菜单项DataContext

另外,作为旁注:学习遵循.NET的命名标准(方法CamelCase),从长远来看,它将使您的生活更轻松,特别是如果您要与其他的程序员合作。 / p>

您可以使用它来生成基本getter / setter的简单属性:

public string Name {get; private set;}

答案 1 :(得分:0)

假设“联系人”是您的ListBox,您可以通过

获取电话号码
((ContactsItem)contacts.SelectedItem).Phone