0
I am new to Windows Store app and I am connecting to a web service that I have created. I get an object called user that has all the information that I need to populate my controls with and the values are being populated correctly in the object. What I cannot seem to figure out is how to connect the object to the controls on the XAML page. I am currently trying to populate the users first name to the <TextBlock x:Name="txtUserName" TextWrapping="Wrap" Text="{Binding ThisUser[0].FirstName}" VerticalAlignment="Center" FontSize="64" HorizontalAlignment="Left" Margin="5" Width="50" Height="150"/> textblock.
I have gone through tutorials and I cannot see what I am missing.
Here is the code for my XAML:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid x:Name="MainMenuGrid">
<Grid.DataContext>
<local:CurrentUserDataSource/>
</Grid.DataContext>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock TextWrapping="Wrap" Text="Welcome to Cuisinier Creatif" VerticalAlignment="Center" FontSize="64" Margin="5" HorizontalAlignment="Center"/>
<VariableSizedWrapGrid HorizontalChildrenAlignment="Stretch" ItemHeight="195" ItemWidth="200" MaximumRowsOrColumns="2" Orientation="Vertical" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button x:Name="btnMyRecipeBooks" Content="My Reipie Books" Width="200" HorizontalAlignment="Stretch" Height="140" Margin="2"/>
<Button x:Name="btnewRecipeBook" Content="New Recipe Book" Width="200" HorizontalAlignment="Stretch" Height="140" Margin="2"/>
<Button x:Name="btnMyRecipes" Content="My Reipies" Width="200" HorizontalAlignment="Stretch" Height="140" Margin="2"/>
<Button x:Name="btnNewRecipe" Content="New Recipe" Width="200" HorizontalAlignment="Stretch" Height="140" Margin="2"/>
<Button x:Name="btnShoppingList" Content="Shopping List" Width="200" HorizontalAlignment="Stretch" Height="140" Margin="2"/>
<Button x:Name="btnMyInformation" Content="My Information" Width="200" HorizontalAlignment="Stretch" Height="140" Margin="2" />
</VariableSizedWrapGrid>
<TextBlock x:Name="txtUserName" TextWrapping="Wrap" Text="{Binding ThisUser[0].FirstName}" VerticalAlignment="Center" FontSize="64" HorizontalAlignment="Left" Margin="5" Width="50" Height="150"/>
</Grid>
</Grid>
Code Behind For That Page:
public sealed partial class MainMenu : Page
{
User usr = new User();
public MainMenu()
{
this.InitializeComponent();
}
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
usr = (User)e.Parameter;
CurrentUserDataSource cuDS = new CurrentUserDataSource(usr);
}
}
}
CurrentUserDataSource.cs
class CurrentUserDataSource
{
public CurrentUserDataSource()
{
}
public CurrentUserDataSource(User user)
{
LoadUser(user);
}
private ObservableCollection<CurrentUser> currentUser;
public ObservableCollection<CurrentUser> ThisUser
{
get { return currentUser; }
set { currentUser = value; }
}
private void LoadUser(User user)
{
currentUser = new ObservableCollection<CurrentUser>
{
new CurrentUser
{
FirstName = user.FirstName,
LastName = user.LastName,
EmailAddress = user.LastName,
LastSignIn = user.LastSignIn,
SignUpdate = user.SignUpdate
}
};
}
}
CurrentUser.cs
class CurrentUser:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _firstname;
private string _lastname;
private DateTime _lastsignin;
private DateTime _signupdate;
private string _emailaddress;
public CurrentUser()
{
}
public CurrentUser(User user)
{
this.FirstName = user.FirstName;
this.LastName = user.LastName;
this.LastSignIn = user.LastSignIn;
this.SignUpdate = user.SignUpdate;
this.EmailAddress = user.EmailAddress;
}
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
public string FirstName
{
get { return this._firstname; }
set
{
_firstname = value;
NotifyPropertyChanged("FirstName");
}
}
public string LastName
{
get { return this._lastname; }
set
{
_lastname = value;
NotifyPropertyChanged("LastName");
}
}
public DateTime LastSignIn
{
get { return this._lastsignin; }
set
{
_lastsignin = value;
NotifyPropertyChanged("LastSignIn");
}
}
public DateTime SignUpdate
{
get { return this._signupdate; }
set
{
_signupdate = value;
NotifyPropertyChanged("SignUpdate");
}
}
public string EmailAddress
{
get { return this._emailaddress; }
set
{
_emailaddress = value;
NotifyPropertyChanged("EmailAddress");
}
}
}