在加载时将文本块文本绑定到属性

时间:2014-03-05 19:12:49

标签: c# wpf data-binding

我正在尝试显示窗口加载后查询检索到的记录数。这是我在XAML中的内容:

<TextBlock Name="numRecordsAnalyzed_TAtab" TextWrapping="Wrap" Margin="12,0,0,4" Grid.RowSpan="2"> 
                        <Run Text="Records Found: " Foreground="{StaticResource Foreground}" FontSize="12"/>
                        <Run Text="{Binding Numrecords}" Foreground="Red" FontSize="12"/>
    </TextBlock>

这是我的c#:

private int numOfrecords = 0;
public event PropertyChangedEventHandler PropertyChanged;

    public string Numrecords
    {
        get { return Convert.ToString(numOfrecords); }
        set
        {
            OnPropertyChanged("NumOfrecords");
        }
    }

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }

然后我添加这个来获取记录的数量,当我调试时,我看到变量保存了数字,窗口启动时窗口中显示的一切都没有显示:

numOfrecords = OpenTradesQuery.Count();

我错过了什么?

1 个答案:

答案 0 :(得分:2)

需要举起PropertyChanged事件以通知GUI进行更新

声明类型int的属性,WPF会自动调用您的媒体资源ToString(),您无需担心。

public int Numrecords
{
    get { return numOfrecords; }
    set
    {
        if(numOfrecords != value)
        { 
           numOfrecords = value;
           OnPropertyChanged("Numrecords");
        }
    }
}

设置属性:

Numrecords = penTradesQuery.Count();

您可以在Window / UserControl的构造函数中DataContext之后的代码中设置InitializeComponent()

DataContext = this;

此外,您可以在XAML的根级别设置它,如下所示:

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"/>