2010-11-29 2 views
1

Я это очень простой вопрос знаю ..WPF - DataBind TextBlock.Text в целое

У меня есть TextBlock, который текстовая недвижимости Я хочу быть привязками данных с целым числом я имею в коде .. сейчас я м делает этот

<TextBlock Name="TextBlockCompeltedSongsNumber" Text="{Binding}"></TextBlock> 

Тогда в C# ..

  this.TextBlockCompeltedSongsNumber.DataContext = CompeltedTracks; 

Где CompletedTracks является публичной ИНТ

Что мне не хватает?

+0

Это должно работать нормально , какие проблемы вы получаете? – 2010-11-29 21:23:59

+0

TextBlock ничего не отображает ... он всегда остается пустым ... – Ryan 2010-11-29 21:25:50

+0

@Ryan: Какое сообщение об ошибке вы получаете? Посмотрите окно вывода для «Ошибка привязки» при запуске приложения. Это поможет вам/нам выяснить, в чем проблема. – 2010-11-29 21:26:44

ответ

0

Возможно, вы слишком поздно установили DataContext. После его рендеринга.

Не лучше ли привязать непосредственно к собственности и поднять событие PropertyChanged?

<TextBlock Text="{Binding CompletedTracks}"></TextBlock> 

и установить DataContext родителя TextBlock на владельца CompletedTracks.

0

В конце концов, я только что сделал класс, который реализован INotifyPorpertyChange

//Global Declaration 
information info = new information(); 

позже ...

  this.TextBlockCompeltedSongsNumber.DataContext = info; 

и информационный класс

public class information : INotifyPropertyChanged 
{ 
    private int failedTracks = 0; 
    public int FailedTracks { get { return failedTracks; } set { failedTracks = value; OnPropertyChanged("FailedTracks"); } } 
    private int compeltedTracks = 0; 
    public int CompeltedTracks { get { return compeltedTracks; } set { compeltedTracks = value; OnPropertyChanged("CompeltedTracks"); } } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
} 

и, наконец, в XAML

    <TextBlock Name="TextBlockCompletedSongs" Margin="5,0,5,0">Completed Songs:</TextBlock> 
       <TextBlock Name="TextBlockCompeltedSongsNumber" Text="{Binding Path=CompeltedTracks}"></TextBlock> 
       <TextBlock Name="TextBlockFailedSongs" Margin="5,0,5,0">Failed Songs:</TextBlock> 
       <TextBlock Name="TextBlockFailedSongsNumber" Text="{Binding Path=FailedTracks}"></TextBlock> 

Похоже, что много работы, что должно быть просто ... но я не мог заставить его работать по-другому ... Я не знаю, что я делаю не так: O

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