WPF-将TextBlock.Text数据绑定到整数

WPF-将TextBlock.Text数据绑定到整数,wpf,data-binding,integer,textblock,Wpf,Data Binding,Integer,Textblock,我知道这是一个非常简单的问题 我有一个Textblock,它的文本属性我想被数据绑定到codebehind中的整数。。现在我正在做这件事 <TextBlock Name="TextBlockCompeltedSongsNumber" Text="{Binding}"></TextBlock> 其中CompletedTracks是公共int 我错过了什么 可能您设置DataContext太晚了。在渲染之后 直接绑定到属性并引发PropertyChanged事件不是更好吗

我知道这是一个非常简单的问题

我有一个Textblock,它的文本属性我想被数据绑定到codebehind中的整数。。现在我正在做这件事

<TextBlock Name="TextBlockCompeltedSongsNumber" Text="{Binding}"></TextBlock>
其中CompletedTracks是公共int


我错过了什么

可能您设置DataContext太晚了。在渲染之后

直接绑定到属性并引发PropertyChanged事件不是更好吗

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


并将TextBlock父对象的DataContext设置为CompletedTracks的所有者。

可能您设置DataContext太晚了。在渲染之后

直接绑定到属性并引发PropertyChanged事件不是更好吗

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


并将TextBlock父对象的DataContext设置为CompletedTracks的所有者。

最后,我创建了一个实现InotifyPertyChange的类

    //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

最后,我只是创建了一个实现InotifyPertyChange的类

    //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

应该可以,你有什么问题吗?文本块不显示任何内容。。。它总是空的…@Ryan:你收到了什么错误消息?运行应用程序时,查看输出窗口中的“绑定错误”。这将帮助您/我们找出问题所在。输出窗口中没有绑定错误。。或任何其他errors@Ryan,在该行放置一个断点,然后查看CompletedTracks的值。另外,我假设没有输入错误。这应该很好,你有什么问题吗?文本块不显示任何内容。。。它总是空的…@Ryan:你收到了什么错误消息?运行应用程序时,查看输出窗口中的“绑定错误”。这将帮助您/我们找出问题所在。输出窗口中没有绑定错误。。或任何其他errors@Ryan,在该行放置一个断点,然后查看CompletedTracks的值。此外,我假设没有输入错误。CompletedTracks所有者是所有这些都发生在内部的窗口。。。如何设置数据上下文?this.textblockCompelledSongsnumber.DataContext=this??在Windows的ctor中:this.DataContext=this;CompletedTracks所有者是一个窗口,所有这些都发生在里面。。。如何设置数据上下文?this.textblockCompelledSongsnumber.DataContext=this??在Windows的ctor中:this.DataContext=this;不幸的是,你需要这样做。WPF怎么知道您的财产发生了变化?如果您希望在更改属性时更新UI,则需要告诉WPF一些信息。INotifyPropertyChanged是通常的方法。如果C#能让属性自动完成这项工作那就太好了,但它们不能,所以你最终在WPF中写了很多类似的东西。不幸的是,你需要这样做。WPF怎么知道您的财产发生了变化?如果您希望在更改属性时更新UI,则需要告诉WPF一些信息。INotifyPropertyChanged是通常的方法。如果C#能让属性自动完成这项工作那就太好了,但它们不能,所以你最终会在WPF中写很多类似的东西。