2010-01-29 3 views
0

Я хочу, чтобы связать некоторые свойства из моего кода-за .xaml.cs до некоторой XAML-кода, так же, как это:WPF Binding Problem - Не работает?

<TextBlock [someProperties] ... Text="{Binding ElementName=awesome, Path=value}" /> 
<TextBlock [someProperties] ... Text="{Binding Path=legendary}" /> 

В соответствующем .xaml.cs файле у меня есть свойство:

public String legendary = "High five"; 
public CoolObject awesome = new CoolObject(); //has a public property "String value = '5';" 

Но мои текстовые блоки просто не хотят показывать эту чертову «Высокие пять» и «5». Что мне не хватает?

ответ

0

И <TextBlock [someProperties] ... Text="{Binding ElementName=awesome, Path=value}" /> не будет работать. ElementName используется, когда вы хотите привязываться к некоторому элементу в визуальном дереве. Вам нужно

<TextBlock [someProperties] ... Text="{Binding Path=awesome.value}" /> 

Кроме того, необходимо установить свойство DataContext TextBlock на который содержит ▪ Таблица свойств, которые необходимо связать.

+0

Спасибо, установив DataContext плюс настройке свойств, как свойства, а не поля, сделали это. УРА! – Thomas

+0

приветствуются – Yurec

0

Проблема в том, что «легендарные» и «удивительные» объявлены как поля, а не свойства. Связывание WPF не будет работать с полями.

0

Вам нужно будет поместить ваши поля в свойства. Связывание не поддерживает поля.

Итак:

public String _legendary = "High five"; 
public String legendary { 
    get { return _legendary; } 
    set { _legendary = value; } 
} 

Кроме того, если вы можете захотеть взглянуть на реализацию INotifyPropertyChanged, чтобы убедиться, что все, что вы связываете с вашей собственности обновляется при изменении значения свойства.

+0

Еще не работает .. объявил легендарным, как следовать, просто чтобы попробовать: общественность Строки легендарной {получить {возвращение «High Five»;} множество {}} – Thomas