Binding sur une methode avec un argument dynamique?
Bonjour à tous,
Je rencontre un petit problème qui doit être tout bête mais malheureusement je ne trouve pas de solution. Je vais prendre un exemple.
Une ListBox liste mes utilisateurs, à chaque fois que j'en selectionne un je veux afficher son ID dans une textbox plus bas.
=> fonctionnement ok
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<StackPanel>
<ListBox x:Name="ListBoxAllUser" Width="200" Height="100" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Path=ListAllUser, Mode=OneTime}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="Lastname" />
<Binding Path="Firstname" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Text="{Binding Path=ListAllUser/Id, Mode=OneWay, StringFormat={}ID: {0}}" />
</StackPanel> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public partial class Main : Window
{
public struct StructContext
{
public List<UserEntity> ListAllUser { get; set; }
}
public Main()
{
InitializeComponent();
DataContext = new StructContext
{
ListAllUser = new BLL.Business().GetAllUser()
};
}
} |
Par contre maintenant au lieu d'afficher l'ID je voudrais afficher le répertoire ce cet utilisateur. Hors celui ci ne possède pas cette propriété, c'est le principe. Je l'obtiens en passant l'id de l'utilisateur à une méthode.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public class UserEntity
{
public UserEntity()
{
}
public UserEntity(long id, string lastname, string firstname)
{
Id = id;
Lastname = lastname;
Firstname = firstname;
}
public long Id { get; set; }
public string Lastname { get; set; }
public string Firstname { get; set; }
} |
J'ai une méthode qui me donne ce répertoire
Code:
1 2 3 4 5 6
|
public string GetDirectoryUser(long idUser)
{
//Le path (ici en dur) est sauvegardé dans un fichier xml.
return @"c:\machine\chemin\" + idUser;
} |
Comment pouvoir appeler cette méthode à partir de mon fichier xaml?
J'ai regardé du côté de ObjectDataProvider mais je ne sais pas comment mis prendre:
Code:
1 2 3 4 5 6
|
<Window.Resources>
<ObjectDataProvider x:Key="BusinessInstance" ObjectType="{x:Type bll:Business}" MethodName="GetDirectoryUser">
<!-- Si je ne déclare pas d'argument, j'ai une erreur, mais je ne peux pas mettre de binding ici -->
</ObjectDataProvider>
</Window.Resources> |
Deux précision:
- ma méthode et ma classe ne sont pas statique.
- converter : à oublier.
Si quelqu'un à une idée je suis preneur.
Merci d'avance.