Ara*_*yan 0 silverlight listbox selectedindex controltemplate windows-phone-7
我有Listbox:
<ListBox x:Name="FriendsRequestList">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel>
<TextBlock Text="{Binding FullName}" Foreground="#FF316DCB"/>
<TextBlock Text="{Binding RequestText}" />
<StackPanel Orientation="Horizontal">
<Button Name="Accept" Content="Accept" Click="Accept_Click" Foreground="#FF28901F" Background="#FFB4D8BA"/>
<Button Name="Decline" Content="Decline" Click="Decline_Click" Foreground="#FF28901F" Background="#FFB4D8BA"/>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</Listbox>
Run Code Online (Sandbox Code Playgroud)
我在代码中尝试这些:
private void Accept_Click(object sender, RoutedEventArgs e)
{
Button clickedButton = sender as Button;
StackPanel st1 = clickedButton.Parent as StackPanel;
StackPanel st2 = st1.Parent as StackPanel;
StackPanel st3 = st2.Parent as StackPanel;
object parentControl = st3.Parent;
object obj = FriendsRequestList.Items[3];
int index1 = FriendsRequestList.Items.IndexOf(obj);
int index2 = FriendsRequestList.SelectedIndex;
int SenderId = FriendRequests.ElementAt(index).SenderID;
UserServices.FriendRequestAccept(this, SenderId);
UserServices.GetRequests(this);
}
Run Code Online (Sandbox Code Playgroud)
index2为-1,parentControl为null.为什么ListItem.SelectedIndex是-1?如何知道单击哪个ListItem按钮?
Pra*_*ian 13
该ListBox.SelectedIndex
属性可能为-1,因为它Button
正在拦截click事件并且它没有被传播到ListBox
.无论如何,你不需要索引来做你想做的事情.
假设你设置ItemsSource
如下:
FriendsRequestList.ItemsSource = FriendRequests;
Run Code Online (Sandbox Code Playgroud)
现在,假设FriendRequests
是某种含有收集的FriendRequest
对象,每个都包含属性FullName
,RequestText
等等,修改点击处理程序
private void Accept_Click(object sender, RoutedEventArgs e)
{
FriendRequest req = ( sender as Button ).DataContext as FriendRequest;
int senderID = req.SenderID;
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3415 次 |
最近记录: |