我已经能够轻松地在页面之间传输对象,但现在我无法在xaml标记中显示数据。
这是存储在应用程序的sdf文件中的Quote实体:
[Table]
public class Quote
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int Id { get; set; }
[Column(CanBeNull = false)]
public string QuoteOfTheDay { get; set; }
[Column(CanBeNull = false)]
public string SaidBy { get; set; }
[Column(CanBeNull = true)]
public string Context { get; set; }
[Column(CanBeNull = true)]
public string Episode { get; set; }
[Column(CanBeNull = true)]
public string Season { get; set; }
}
这是背后的代码:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
DataContext = this;
var quote = PhoneApplicationService.Current.State["q"];
Quote quoteToDisplay = (Quote)quote;
}
public static readonly DependencyProperty QuoteToDisplayProperty = DependencyProperty.Register(
"QuoteToDisplay", typeof(Quote), typeof(PhoneApplicationPage), new PropertyMetadata(default(Quote)));
public Quote QuouteToDisplay
{
get { return (Quote)GetValue(QuoteToDisplayProperty); }
set { SetValue(QuoteToDisplayProperty, value); }
}
xaml:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock FontSize="36" FontFamily="Verdana" FontWeight="ExtraBlack" Text="{Binding QuoteToDisplay.QuoteOfTheDay}" />
</Grid>
我得到了我想要在xaml中显示的确切数据。我想在TextBlock中显示QuoteOfTheDay属性。但每次我尝试使用{Binding}时,TextBlock始终为空。当我也尝试使用Binding时,intellisense不建议 “QuoteOfTheDay”。
我显然错过了重要的事情,但我真的不知道它是什么。
答案 0 :(得分:2)
快速查看代码会显示几个问题:
quoteToDisplay.QuoteOfTheDay
,但XAML中的绑定语句为{Binding quoteToDisplay.QuoteOfTheDay}
,这意味着您正在尝试绑定到不存在的层次结构{{ 1}}。由于这个错误,您可能在输出窗口中收到BindingExpression错误。我要做的是:
quoteToDisplay.QuoteOfTheDay.quoteToDisplay.QuoteOfTheDay
在XAML中:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
DataContext = this;
var quote = PhoneApplicationService.Current.State["q"];
QuoteToDisplay = (Quote)quote;
}
public static readonly DependencyProperty QuoteToDisplayProperty = DependencyProperty.Register(
"QuoteToDisplay", typeof (Quote), typeof (MainPage), new PropertyMetadata(default(Quote)));
public Quote QuoteToDisplay
{
get { return (Quote) GetValue(QuoteToDisplayProperty); }
set { SetValue(QuoteToDisplayProperty, value); }
}
答案 1 :(得分:0)
如果在代码隐藏中分配.Text属性,为什么要使用{Binding}?我认为你必须从xaml中移除绑定或(并且它更好的方式)使用MVVM。