У меня проблема с привязками в wpf. Я обнаружил странную проблему. У меня есть класс ConfiugrationStringBuilder, который наследует от DbConnectionStringBuilder. Когда я делаю что-то подобное
public class ConfiugrationStringBuilder : DbConnectionStringBuilder
{
public string Directory { get;set; }
}
ConfiugrationStringBuilder builder = new ConfiugrationStringBuilder(connStr);
builder.Directory = "d:\dir"; //my property
txtBox.DataContext = builder;
затем добавьте привязку к xaml для txtBox
<TextBox Name="txtBox" Text="{Binding Path=Directory}"></TextBox>
Проблема в том, что приведенный выше код не работает. Я не могу привязать к свойству класса, но я могу привязать к публичным свойствам базы DbConnectionStringBuilder.
И самое забавное, что когда я удаляю наследование из DbConnectionStringBuilder
так мой код выглядит так
public class ConfiugrationStringBuilder
{
public string Directory { get;set; }
}
В этом случае вышеуказанная привязка работает хорошо. Я не могу найти информацию о таких случаях, и почему в этом случае привязка не работает? кто-нибудь может объяснить такое поведение?
Пока я писал вопрос, я пытался выяснить, в чем проблема. И обнаружил, что DbConnectionStringBuilder имеет индексатор, поэтому при попытке привязки к Path=Directory
на кулисах он делает builder["Directory"]
, а не builder.Directory
. В любом случае, кто-нибудь может сказать мне, почему это происходит?