Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listbox WP7-单击列表框项目时调用绑定号码_Listbox_Windows Phone 7 - Fatal编程技术网

Listbox WP7-单击列表框项目时调用绑定号码

Listbox WP7-单击列表框项目时调用绑定号码,listbox,windows-phone-7,Listbox,Windows Phone 7,因此,我有一个对象列表,其中包含绑定到XAML中列表框的名称和编号。列表框可以很好地显示电话号码,但我希望它使用phonecall on click拨打电话号码。以下是onlick代码: private void taxiListItem_Click(object sender, RoutedEventArgs e) { Microsoft.Phone.Tasks.PhoneCallTask phonecall = new Microsoft.Phone.Task

因此,我有一个对象列表,其中包含绑定到XAML中列表框的名称和编号。列表框可以很好地显示电话号码,但我希望它使用phonecall on click拨打电话号码。以下是onlick代码:

    private void taxiListItem_Click(object sender, RoutedEventArgs e)
    {
        Microsoft.Phone.Tasks.PhoneCallTask phonecall = new Microsoft.Phone.Tasks.PhoneCallTask();
        phonecall.PhoneNumber = "213";
        phonecall.Show();
    }
这里是我定义填充列表的TaxiCompany对象的地方

    public class TaxiCompany {
        public String CoName { get; set; }
        public String Phone { get; set; }
        public TaxiCompany(String coname, String phone) {
            this.CoName = coname;
            this.Phone = phone;

        }
    }
当我硬编码电话号码时,电话正常工作。现在,当我设置phonecall.Phonenumber=sender.getPhone()或e.Phone()或两者的任何变体时,它被标记为未定义的方法。我在这里犯了什么根本性的错误吗?我假设objectsender或e是被单击的列表项

注意:XAML中的列表框可以很好地显示电话号码和地址

                   <Button Click="taxiListItem_Click" Width ="436" Height="120">
                        <Button.Content>
                            <StackPanel Orientation="Vertical" Height=" 80">
                            <StackPanel Orientation="Horizontal" Height="40" Width="436">
                                <TextBlock Width="436" FontSize="30" Text= "{Binding CoName}" Height="40"/>
                            </StackPanel>
                            <StackPanel Orientation="Horizontal" Height="40" Width="436">
                                <TextBlock Name ="PhoneNo"  Width="300" FontSize="22" Text= "{Binding Phone}" Height="40"/>
                            </StackPanel>

                            </StackPanel>    
                        </Button.Content>
                    </Button>


第一次使用C#/Silverlight,以便获得任何帮助。

试试这个。列表框显示出租车公司,在列表中选择一项会导致电话号码被尝试拨打

请注意,不必向列表中添加按钮,而需要强制转换传递给选择事件的变量。(也可以将发件人强制转换为列表框,然后强制转换所选项目。)

xaml:


政务司司长:

//例如使用的类。换个名字更合适
公共类视图模型
{
公共可观测收集公司{get;private set;}
公共视图模型()
{
出租车公司=新的可观察到的集合();
新增(新出租车公司(“AAA出租车”,“123-456-789”);
加上(新的士公司(“BBB的士”,“111234329”);
增加(新的出租车公司(“CCC汽车”,“98765432”);
}
}
公共主页()
{
初始化组件();
//将listbox控件的数据上下文设置为示例数据
DataContext=新的ViewModel();
this.Loaded+=新的RoutedEventHandler(主页面_-Loaded);
}
private void Main ListBox_SelectionChanged(对象发送者,SelectionChangedEventArgs e)
{
var phonecall=new PhoneCallTask();
phonecall.PhoneNumber=((出租车公司)((对象[])(e.AddedItems))[0])。电话;
Show();
//将所选索引重置为-1(无选择)
MainListBox.SelectedIndex=-1;
}

您的按钮与列表框的关系如何?我使用了{Binding}-这就是您要问的吗?谢谢!此MainListBox.SelectedIndex=-1;声明不断导致它崩溃,但当我评论它是好的,我会投票支持你的答案,但我没有声誉:(
<ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding TaxiCompanies}" SelectionChanged="MainListBox_SelectionChanged">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical" Height=" 80">
                <TextBlock Width="436" FontSize="30" Text= "{Binding CoName}" Height="40"/>
                <TextBlock Name ="PhoneNo"  Width="300" FontSize="22" Text= "{Binding Phone}" Height="40"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
// class used for example. Another name would be more appropriate
public class ViewModel
{
    public ObservableCollection<TaxiCompany> TaxiCompanies { get; private set; }

    public ViewModel()
    {
        TaxiCompanies = new ObservableCollection<TaxiCompany>();
        TaxiCompanies.Add(new TaxiCompany("AAA Cabs", "123-456-789"));
        TaxiCompanies.Add(new TaxiCompany("BBB Taxis", "111234329"));
        TaxiCompanies.Add(new TaxiCompany("CCC Cars", "98765432"));
    }
}

    public MainPage()
    {
        InitializeComponent();

        // Set the data context of the listbox control to the sample data
        DataContext = new ViewModel();

        this.Loaded += new RoutedEventHandler(MainPage_Loaded);
    }

    private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var phonecall = new PhoneCallTask();
        phonecall.PhoneNumber = ((TaxiCompany)(((object[])(e.AddedItems))[0])).Phone;
        phonecall.Show();

        // Reset selected index to -1 (no selection)
        MainListBox.SelectedIndex = -1;
    }