2017-02-26 71 views
1

好吧,所以我的问题是,我正在生成一些元素,因为链接到数组(对于数组上的每个元素,在XAML中有另一个项目)。我正在用TreeView控件做这个,albiet遵循一个在线示例(到目前为止效果很好)。动态元素的XAML图像加载

在这个例子中,这些组是家庭,并在每个...在图像中显示更容易here。 Family是一个包含FamilyMembers的ObservableCollection的类,它们都用于填充TreeView。

这里的主要业务有:

<TreeView Name="trvFamilies"> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate DataType="{x:Type self:Family}" ItemsSource="{Binding Members}"> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="{StaticResource ImageGroup}" Margin="0,0,5,0" /> 
        <TextBlock Text="{Binding Name}" /> 
        <TextBlock Text=" [" Foreground="Blue" /> 
        <TextBlock Text="{Binding Members.Count}" Foreground="Blue" /> 
        <TextBlock Text="]" Foreground="Blue" /> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
      <DataTemplate DataType="{x:Type self:FamilyMember}"> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="{StaticResource ImageUserMale}" Margin="0,0,5,0" /> 
        <TextBlock Text="{Binding Name}" /> 
        <TextBlock Text=" (" Foreground="Green" /> 
        <TextBlock Text="{Binding Age}" Foreground="Green" /> 
        <TextBlock Text=" years)" Foreground="Green" /> 
       </StackPanel> 
      </DataTemplate> 
     </TreeView.Resources> 
    </TreeView> 

这一切工作正常,但这里是我的问题:我有,如果一个家庭成员是男性和女性之一,如果家庭成员是女性男性形象。我不知道如何根据这个标准来设置图像。正如您所看到的,此刻图像是静态的。

谢谢!

回答

1

您可以使用DataTrigger,例如,对您的家庭成员的财产Gender财产:

<Image> 
    <Image.Style> 
     <Style TargetType="Image"> 
      <Setter Property="Source" Value="{StaticResource ImageUserUnknownGender}"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Gender}" Value="Male"> 
        <Setter Property="Source" Value="{StaticResource ImageUserMale}"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Gender}" Value="Female"> 
        <Setter Property="Source" Value="{StaticResource ImageUserFemale}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

那么,这将做到这一点。谢谢你的帮助! – TheFaithfulLearner

+0

不客气。请注意,这种方法有两种常见的替代方法。首先,您可以直接将Image控件的Source属性绑定到FamilyMember类中的'ImageSource'类型的'GenderImage'属性。其次,您可以使用绑定转换器绑定到“性别”属性,该转换器将Gender枚举转换为ImageSource。 – Clemens