如何从ListBox中获取Header Information?

时间:2014-09-04 09:48:10

标签: c# xaml windows-phone-8

当我点击listBox项目时,我在" selectionChanged"中得到一个SubItem。事件。我也需要获得标题。我怎么能实现它?

public class Data
{
    public string Title { get; set; }
    public List<SubItem> SubItems { get; set; }

    public Data()
    {
        SubItems = new List<SubItem>();   
    }    
}

<phone:LongListSelector ItemsSource="{Binding DataCollection}" Grid.Row="0">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Title}" Padding="5" />
                    <TextBlock Text="{Binding ImageSource}" Padding="5"/>
                </StackPanel>
                <ListBox ItemsSource="{Binding SubItems}" SelectionChanged="ListBox_SelectionChanged">
                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Vertical"/>
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                    <ListBox.ItemTemplate>
                        <DataTemplate>                                   
                            <TextBlock Text="{Binding SubItemTitle}" Margin="0,0,12,0" Padding="10" />
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

2 个答案:

答案 0 :(得分:0)

selectionChanged事件下,请尝试以下操作:

string text = (listBox.SelectedItem as ListBoxItem).Content.ToString(); //listBox is the name of the Listbox

更好的参考可能是:

Getting selected item string from bound ListBox

希望它有所帮助!

答案 1 :(得分:0)

SelectionChanged事件中,您可以通过强制转换sender参数来检索ListBox。从那里,您可以通过强制转换datacontext来检索您的Data对象:

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var listBox = (ListBox)sender;

    var data = (Data)listBox.DataContext;

    System.Diagnostics.Debug.WriteLine(data.Title);
}