如何从ListBox中的SelectionChangeEvent期间从textBlock获取文本?

时间:2013-11-14 02:54:31

标签: c# wpf xaml windows-phone-8 listbox

我尝试从我的列表框中选择项目时从我的TextBlock中获取文本。

这是我的xaml文件中列表框的代码..

<ListBox x:Name="listBox" Height="535" Margin="7,0,12,0" 
      SelectionChanged="selectedItem" 
      ItemsSource="{Binding}">

    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <toolkit:WrapPanel FlowDirection="LeftToRight" 
                ItemWidth="215" ItemHeight="215" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.ItemTemplate x:Uid="info">
        <DataTemplate>
            <StackPanel>
                <Border>
                    <Image HorizontalAlignment="Left" Margin="6,6,0,0" 
                        Name="image1" Stretch="Fill" 
                        VerticalAlignment="Top" 
                        Source="{Binding imageSource}" />
                </Border>
                <TextBlock x:Name="path" Foreground="Transparent" 
                    Text="{Binding imagePath}"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>

</ListBox>

对于我的c#代码我正在使用一个能处理tap事件的selectionChangedEvent方法,但我无法弄清楚如何获取我的TextBlock元素的内容。

private void selectedItem(object sender, SelectionChangedEventArgs e)
{
    //I need to take the content of my textblock w/c carry the path for
    //my image to be use to share using ShareMediaTask.    
    //path = the content of my textblock

    var task = new ShareMediaTask();
    task.FilePath = path;
    task.Show();
}

我真的很感激任何帮助。

2 个答案:

答案 0 :(得分:0)

如果它是从文本块发送的,则它将是您的发件人...所以您可以执行类似

的操作
var text = ((TextBlock)sender).Text;

否则,您必须引用它绑定到的属性...
为什么,哦为什么要命名你的文本块path?它会让所有人感到困惑......称之为TextBlockPath,这样一来,它只是一条道路并不含糊......

答案 1 :(得分:0)

如果imagePath是类的属性,请尝试使用

var item = listBox.SelectedItem as className; // like ShareMediaTask

var task = new ShareMediaTask();
task.FilePath = item.imagePath;
task.Show();