如何将XamDataTree图标设置为位图而不是文件名

时间:2013-01-14 13:01:57

标签: c# wpf infragistics

set the XamDataTree image,但我不想每次都将图片文件夹复制到我的调试文件夹中。相反,我想add the image to my project resources并从那里使用它。目前没有显示图像,因为它需要一个图像的路径,我给它一个实际的位图。 TreeNode中的Icon属性设置在代码的另一部分中。

这是我的Xaml代码:

<ig:XamDataTree
    Grid.Row="1"
    Name="MyTree" 
    ScrollViewer.CanContentScroll="True"
    ItemsSource="{Binding ComparedContents}"
    HorizontalAlignment="Stretch"
    VerticalAlignment="Stretch"
    >
    <ig:XamDataTree.CheckBoxSettings>
        <ig:CheckBoxSettings CheckBoxVisibility="Visible" />
    </ig:XamDataTree.CheckBoxSettings>
    <ig:XamDataTree.CollapsedIconTemplate>
        <DataTemplate>
            <Image Source="{Binding Path=Icon}"/>
        </DataTemplate>
    </ig:XamDataTree.CollapsedIconTemplate>
    <ig:XamDataTree.ExpandedIconTemplate>
        <DataTemplate>
            <Image Source="{Binding Path=Icon}"/>
        </DataTemplate>
    </ig:XamDataTree.ExpandedIconTemplate>
    <ig:XamDataTree.GlobalNodeLayouts>
        <ig:NodeLayout
            Key="Children"
            DisplayMemberPath="Text"
            TargetTypeName="Model.TreeNode" 
            >
        </ig:NodeLayout>
    </ig:XamDataTree.GlobalNodeLayouts>
</ig:XamDataTree>

这是我的模型,每个Property都有一个私有商店用于值,并在事件发生变化时触发事件。

public class TreeNode : INotifyPropertyChanged
{
    public Label Text;
    public System.Drawing.Image Icon;
    public ObservableCollection<TreeNode> Children;
}

1 个答案:

答案 0 :(得分:2)

假设您将图像嵌入到应用程序中,可以使用pack uri将图像加载到节点模板中。不要在Icon属性上使用Image类型,而应使用Uri并将其设置为如下所示:

Icon = new Uri("pack://application:,,,/Resources/Images/icon.png");

您需要稍微修改模板中的绑定,因为此模板的DataContext将是XamDataTreeNodeDataContext。此对象具有Data属性,该属性将是您的TreeNode对象。您的绑定应更新为:

<Image Source="{Binding Path=Data.Icon}"/>