Listbox WP7-单击列表框项目时调用绑定号码
因此,我有一个对象列表,其中包含绑定到XAML中列表框的名称和编号。列表框可以很好地显示电话号码,但我希望它使用phonecall on click拨打电话号码。以下是onlick代码: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
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;
}