Bonjour,

Mon application WPF (WpfApplication1) est, pour sa partie XAML, composé d'une simple grille vide.

Les éléments y sont chargés, depuis un fichier XAML, grâce à un XamlReader.
Ce fichier Xaml contient (pour l'exemple) une image située dans le dossier "Mes documents" de l'utilisateur...et DOIT être lus à cet emplacement.

Le soucis, c'est que lors de l'importation de ce fichier XAML l'url des images est relative à l'application qui charge le XAML
...en clair, ce devrait être une image dont l'URL serait relatif a l'application (pack://siteoforigin:, pack://application)
Or, ici le chemin 'sort' de ce contexte et va se contruire ainsi:
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "Theme\"

J'écris donc un Converter, en espérant récupérer le nom du fichier et reconstruire le path complet...mais sans succès!!
> 'Impossible de créer le type inconnu '{clr-namespace:WpfApplication1}imgurlConvert'.'

La partie XAML de l'application:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:test"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Class="MainWindow" Title="main" Height="600" Width="800">
<Grid></Grid>
</Window>
La partie VB de l'application:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Imports System.IO
Class MainWindow
    Public Shared ThemeTempFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Theme\"
    Public Shared themeGrid As Grid
    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Debug.Print(ThemeTempFolder)
        loadInterface()
    End Sub
    Sub loadInterface()
        ' Load extracted (grid) xaml file as content of the window
        Dim GridUri As String = ThemeTempFolder & "theme.xaml"
        Dim fs As FileStream = New FileStream(GridUri, FileMode.Open, FileAccess.Read)
        Dim sri = TryCast(System.Windows.Markup.XamlReader.Load(fs), Grid)
        Me.Content = sri
        fs.Close()
        ' Liens, dans le code, aux éléments de l'interface chargée en Xaml.
        themeGrid = LogicalTreeHelper.FindLogicalNode(sri, "themeGrid")
    End Sub
End Class
Public Class imgurlConvert
    Implements IValueConverter
    Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
        Dim valConv As String = MainWindow.ThemeTempFolder & value
        If File.Exists(valConv) Then
            Return valConv
        End If
        Return Nothing
    End Function
    Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
        Return value
    End Function
End Class
Le fichier XAML à charger:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:local="clr-namespace:WpfApplication1" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:System="clr-namespace:System;assembly=mscorlib" Name="themeGrid">
    <Grid.Resources>
        <local:imgurlConvert x:Key="urlConvert" />
    </Grid.Resources>
    <Grid Name="mainGrid">
        <Image Source={Binding Path="image.png", Converter={StaticResource urlConvert}} CacheOption="OnLoad" x:Name="Image1"/>
    </Grid>
</Grid>

J'espère que j'ai été assez clair..et vous remercie pour l'aide que vous voudrez bien m'apporter!!