1

XamDataTree image を設定しましたが、毎回イメージ フォルダーをデバッグ フォルダーにコピーしたくありません。代わりに、イメージをプロジェクト リソースに追加して、そこから使用したいと考えています。現在、実際のビットマップを与える画像へのパスが必要なため、画像は表示されません。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>

これは私のモデルです。各プロパティには値のプライベート ストアがあり、変更された場合にイベントが発生します。

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

1 に答える 1

2

画像をアプリケーションに埋め込んだと仮定すると、pack uri を使用して画像をノード テンプレートにロードできます。Icon プロパティで Image タイプを使用する代わりに、Uri を使用して次のように設定する必要があります。

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

このテンプレートの DataContext は XamDataTreeNodeDataContext になるため、テンプレートのバインディングを少し変更する必要があります。このオブジェクトには、TreeNode オブジェクトとなる Data プロパティがあります。バインディングを次のように更新する必要があります。

<Image Source="{Binding Path=Data.Icon}"/>
于 2013-01-15T22:02:34.370 に答える