J'ai un problème avec les liaisons dans wpf. J'ai découvert un problème étrange. J'ai la classe ConfiugrationStringBuilder qui hérite de DbConnectionStringBuilder. Quand je ne SMTH comme ceLiaison étrange wpf
public class ConfiugrationStringBuilder : DbConnectionStringBuilder
{
public string Directory { get;set; }
}
ConfiugrationStringBuilder builder = new ConfiugrationStringBuilder(connStr);
builder.Directory = "d:\dir"; //my property
txtBox.DataContext = builder;
puis ajoutez la liaison à XAML pour txtBox
<TextBox Name="txtBox" Text="{Binding Path=Directory}"></TextBox>
Le problème est que le code ci-dessus ne fonctionne pas. Je ne peux pas lier à ma propriété de classe, mais je peux lier aux propriétés publiques de la base DbConnectionStringBuilder.
Et la chose la plus drôle est que quand je supprimer l'héritage de DbConnectionStringBuilder
donc mon code ressemble à ceci
public class ConfiugrationStringBuilder
{
public string Directory { get;set; }
}
Dans ce cas, les travaux de liaison ci-dessus bien. Je ne peux pas trouver d'informations sur de tels cas et pourquoi dans ce cas, la liaison ne fonctionne pas? Quelqu'un peut-il expliquer un tel comportement?
Pendant que j'écrivais le qusetion, j'ai essayé d'étudier ce qui est un problème. Et découvert que DbConnectionStringBuilder a indexeur, alors quand essayer de lier à Path=Directory
sur les coulisses, il fait builder["Directory"]
pas builder.Directory
. De toute façon, quelqu'un peut-il me dire pourquoi il le fait?