2
我有一個Web服務,返回一個用戶對象的名字,姓氏,EmailAddress等......我建立一個Windows 8商店應用程序,我需要綁定對象從Web服務到我的應用程序控件。我可以調用Web服務,並將我期望的User對象中的值返回。我無法弄清楚如何將信息綁定到Windows 8 Store應用程序控件。我第一次嘗試是將名字綁定到一個名爲txtUserName的TextBlock:Windows應用商店應用DataBind TextBlock從對象從Web服務
這裏是面向網格的文本塊是在XAML:
<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>
類CurrentUserDataSource類:
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
}
};
}
}
CurrentUserClass:
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 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);
}
}
我想我錯過了一些明顯的東西。我已經通過一些教程,並找不到我缺少的東西。