我正在尝试显示窗口加载后查询检索到的记录数。这是我在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();
我错过了什么?
答案 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}}"/>