Shapes.Path数据可以用作WPF中的图像源吗?

时间:2013-12-11 16:40:24

标签: wpf svg treeview treeviewitem

我在我的WPF应用程序中使用了一些矢量图形,我通过ResourceDictionary访问。我现在正在创建一个TreeView,我想在其中替换用于在节点前面添加矢量图形的默认图像。如果它们是真实的图像,那么为节点定义不同的图像就是一块蛋糕,但是有什么方法可以将Path元素用作TreeView中的图像源吗?

我宁愿使用矢量而不是实际图像,因为我在网站的其他区域使用矢量图形,并且最好只有一个图像源。

ResourceDictionary中的条目示例如下:

<ControlTemplate x:Key="MyPath">
   <Viewbox>
      <Grid>
         <Path Data="F1M2357.31445,2509.047846875L2456.35742,2509.047846875C2461.00781,2509.047846875,2464.78906,2504.952146875,2464.78906,2499.916996875C2464.78906,2494.881836875,2461.00781,2490.785156875,2456.35742,2490.785156875L2357.31445,2490.785156875C2352.66602,2490.785156875,2348.88477,2494.881836875,2348.88477,2499.916996875C2348.88477,2504.952146875,2352.66602,2509.047846875,2357.31445,2509.047846875z" Fill="White" Stretch="Fill" />            
      </Grid>
    </Viewbox>
 </ControlTemplate>

1 个答案:

答案 0 :(得分:0)

我不确定您正在谈论的默认图像,但在WPF中,您只需为包含您选择的任何UI元素的项目定义DataTemplate即可。因此,没有理由使用Image来显示矢量图形:

<TreeView.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <Path Data="F1M2357.31445,2509.047846875L2456.35742,2509.047846875C2461.00781,2509.047846875,2464.78906,2504.952146875,2464.78906,2499.916996875C2464.78906,2494.881836875,2461.00781,2490.785156875,2456.35742,2490.785156875L2357.31445,2490.785156875C2352.66602,2490.785156875,2348.88477,2494.881836875,2348.88477,2499.916996875C2348.88477,2504.952146875,2352.66602,2509.047846875,2357.31445,2509.047846875z" Fill="White" Stretch="Fill" />
            <ContentPresenter Content="{Binding}" Margin="5,0,0,0" />
        </StackPanel>
    </DataTemplate>
</TreeView.ItemTemplate>