2014-01-04 4 views
0

В моем XAML я это:Как я могу привязать свойство класса из кода?

<TextBlock Text="{Binding Stats.Scores.Team}" Style="{StaticResource Column_Value_Large}" /> 

мне нужно, чтобы быть в состоянии создать что TextBlock, в полном комплекте, в коде. Вот что у меня есть:

foreach (var Stats in player){ 
    var columnHeaderScore = new TextBlock 
    { 
     Style = Application.Current.Resources["Column_Value_Large"] as Style, 
    }; 
    columnHeaderScore.SetBinding(TextBlock.TextProperty, new Binding 
    { 
     Path = new PropertyPath("Stats.Scores.Team"), 
    }); 
    columnHeaderStackPanel.Children.Add(columnHeaderScore); 
} 

Однако привязка не работает. Каким образом можно установить привязку в коде?

Редактировать для контекста: Моя цель - создать кучу этих текстовых полей внутри большой петли в коде. См. Мой пересмотренный пример выше, который теперь показывает цикл. Поскольку я хочу сделать это таким образом, я не думаю, что для меня есть возможность сделать это в XAML; Мне нужно было бы установить привязку в коде.

+0

Вы получаете какие-либо обязательные ошибки в вашем выводе в Visual Studio? Если привязка не работает, вы должны получить журнал трассировки. – nvoigt

ответ

0

У меня есть.

Моя проблема заключалась в использовании «Путь» в SetBinding вместо «Source». Рабочий код выглядит следующим образом:

foreach (var Stats in player){ 
var columnHeaderScore = new TextBlock 
{ 
    Style = Application.Current.Resources["Column_Value_Large"] as Style, 
}; 
columnHeaderScore.SetBinding(TextBlock.TextProperty, new Binding 
{ 
    Source = Stats.Scores.Team, 
}); 
columnHeaderStackPanel.Children.Add(columnHeaderScore); 

}

0

Я думаю, что вы используете xaml неправильно. Почему дон t you set the TextBlock in the XAML code and bind its Видимость to a property or use a Стиль . Then you don t необходимо создать привязку в коде. EDIT: Почему вы не используете ItemPanel или что-то подобное тому, с которым вы связываете свою коллекцию, и даете ей DataTemplate, который отображает текстовые поля?

+0

Я просто добавил какой-то контекст к своему оригинальному сообщению, чтобы объяснить, почему это нежелательно. Я создам кучу этих текстовых полей через цикл в коде, иначе ваш ответ будет работать. – speedreeder

+0

@speedreeder Отредактировано мое сообщение, чтобы отреагировать на ваше редактирование. – FlashTek

+0

Я понял. Извините за беспорядок и спасибо за вашу помощь! – speedreeder

Смежные вопросы