2011-09-01 64 views
0

我有一个使用数据模板的列表框。该模板非常简单,由图像和文本块组成。它们都绑定到一个XML文档。模板如下:在数据模板内选择列表框项目

<Window.Resources> 
    <XmlDataProvider x:Key="NinjaData" Source="\Data\Ninjas.xml" XPath="/Ninjas"/>      
    <DataTemplate x:Key="NinjaDataTemplate">   
     <StackPanel>     
      <StackPanel Orientation="Horizontal" Margin="0"> 
       <Image Source="{Binding XPath=ImageFile}" Margin="5" Width="50"/> 
       <TextBlock Text="{Binding [email protected]}" Margin="5" FontFamily="OCR A Std" Foreground="#FF9114" FontSize="14" Name="NinjaName"/>     
      </StackPanel> 
     </StackPanel>   
    </DataTemplate> 
</Window.Resources> 

列表框如下:

<ListBox Background="{x:Null}" BorderBrush="{x:Null}" 
       ItemsSource="{Binding Source={StaticResource NinjaData}, XPath=Ninja}" 
       ItemTemplate="{StaticResource NinjaDataTemplate}" 
       > 
        <ListBox.Resources> 
         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Gray"></SolidColorBrush>              
        </ListBox.Resources> 
        <ListBox.Effect> 
         <DropShadowEffect ShadowDepth="1" Color="#FF282828"/> 
        </ListBox.Effect> 
        </ListBox> 

我有麻烦工作如何检索TextBlock的数据模板里面的内容时,我一下就可以了在列表框中。我想将其显示在页面上其他位置的标签中,但我无法确定如何访问该文本块。

任何人都可以帮助并指向正确的方向吗?我觉得我现在正在圈圈。

感谢您的任何帮助。

回答

3

由于您拥有ListB牛,你可以使用选择,只是名称列表框,并绑定到的SelectedItem:

<ListBox Name="lb" ... /> 
<Label DataContext="{Binding SelectedItem, ElementName=lb}" 
     Content="{Binding [email protected]}"/> 

这并不检索模板中的TextBlock的文本,但在相同的源得到它模板。 (你实际上可以在模板本身的TextBlock目标,但我不会推荐它)

+0

优秀。作品一种享受。谢谢你今天教我新东西。干杯,伙计们。 – user924014

0

到您的文本块添加的MouseLeftButtonUp事件处理您的DataTemplate喜欢里面:

<TextBlock Text="{Binding [email protected]}" Margin="5" FontFamily="OCR A Std" Foreground="#FF9114" FontSize="14" Name="NinjaName" MouseLeftButtonUp="TextBlock_MouseLeftButtonUp"/> 

现在你TextBlock_MouseLeftButtonUp应该是这样的:

private void TextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    TextBlock txt = sender as TextBlock; 
} 

现在做任何你喜欢做txt

+0

编辑:废话。感谢您的回复,您的建议完美运作。我用txt.Text找到我正在寻找的东西。队友的欢呼声。 – user924014

+0

虽然仔细检查,它只适用于我单击TextBlock本身,而不是列表框项目。 – user924014