2012-10-27 31 views
0

我将ObservableCollection<Employe>设置为ListBox.ItemsSource的来源,并为ListBox.ItemsSource设置了一些DataTemplate要通过它的密钥获取价值,从其他字典通过XAML

XAML模板:

<DataTemplate x:Key="tmpEmploye"> 
    <Border BorderThickness="3" BorderBrush="Gray" CornerRadius="5"> 
     <StackPanel Orientation="Vertical"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Path=Surname}" 
          HorizontalAlignment="Stretch" Margin="2" 
          FontWeight="Bold" TextWrapping="Wrap"/> 
       <TextBlock Text="{Binding Path=Name}" 
          HorizontalAlignment="Stretch" Margin="2"/> 
       <TextBlock Text="{Binding Path=Patronymic}" 
          HorizontalAlignment="Stretch" Margin="2" 
          TextWrapping="Wrap"/> 
      </StackPanel> 
      <TextBlock Text="{Binding Path=Post}" Foreground="Gray" 
         HorizontalAlignment="Stretch" Margin="2" 
         FontStyle="Italic" TextWrapping="Wrap"/> 
     </StackPanel> 
    </Border>        
</DataTemplate> 

XAML的列表框:

<ListBox x:Name="lbEmployees" x:FieldModifier="internal" 
     ItemTemplate="{StaticResource tmpEmploye}" HorizontalContentAlignment="Stretch"/> 

结果:

enter image description here

看,Employee类有一个Post属性,它是一个记录索引从ObservableDictionary<Int64, String>(我的一些课)。您可以看到'-1'值,但我需要从我的ObservableDictionary<Int64, String>对象中获取此密钥的值。我可以获取必要的值并通过XAML代码显示它吗?

回答

-1

您可以编写一个IMultiValueConverter,并将Post属性和您的字典绑定到它。

请参阅http://msdn.microsoft.com/en-us/library/system.windows.data.imultivalueconverter.aspx

+0

谢谢。我今天会读。 –

+0

转换器的作用是将一个值转换为另一个值。布尔到能见度转换器。转换器从不会被用于做一些业务逻辑操作。 –

+0

@DJ看看他想要达到的目标,这不是商业逻辑,而是描述翻译的基本ID。我发现使用数值转换器没有任何问题。 怎么样做一个建设性的建议,而不是只是downvote别人的~~~ –