UWP Development, Modifying UserListPage View

Hello! In this post, we will take a detailed look at Universal Windows Platform (UWP) development. In particular, I will explain how to modify the view of the UserListPage. UWP is a platform that supports app development for a variety of Windows 10 devices and consists of various user interface (UI) elements. In this lesson, we will learn how to display a list of users using XAML and C# and improve the interaction with the view.

1. Introduction to UWP

UWP is a platform created by Microsoft that supports the development of apps that run on various Windows devices, including desktops, tablets, Xbox, and IoT devices. UWP apps are composed of a UI that uses XAML and backend logic that uses C# or C++. This structure allows developers to create applications optimized for a wide range of screen sizes and resolutions.

1.1 Features of UWP

  • Responsive Design: UWP provides the ability to automatically support various screen sizes and resolutions.
  • Security: It runs in a sandboxed environment, ensuring the safe protection of user data.
  • Zero Page (App Bar): It supports easy access for users through essential elements in the UI.

2. Overview of UserListPage

The UserListPage is an important component of a UWP application that displays a list of users. It usually shows the user’s profile picture, name, status, etc., and interactions with users are often important.

2.1 Basic ViewModel Setup

The data needed to build the user list is passed through the ViewModel. UserViewModel represents the data of each user and contains specific properties.


public class UserViewModel
{
    public string UserName { get; set; }
    public string UserStatus { get; set; }
    public string UserImage { get; set; }

    public UserViewModel(string userName, string userStatus, string userImage)
    {
        UserName = userName;
        UserStatus = userStatus;
        UserImage = userImage;
    }
}

3. Modifying the UserListPage View

By modifying the view of the UserListPage, we can provide a more useful and intuitive user experience. Here, we will use GridView to dynamically display the list of users and add click events to each user item to show additional information.

3.1 Setting Up XAML Structure

We will use GridView in XAML to display the list of users. We can define the display format and style for each user item.




    
        
            
                
                    
                        
                        
                        
                    
                
            
        
    

3.2 Adding Backend Logic

Now, let’s implement the backend logic for the UserListPage and connect the ViewModel that manages the user list. We will write a LoadUsers method to load the initial user list.


// UserListPage.xaml.cs
public sealed partial class UserListPage : Page
{
    public ObservableCollection Users { get; set; }

    public UserListPage()
    {
        this.InitializeComponent();
        Users = new ObservableCollection();
        LoadUsers();
        UserGridView.ItemsSource = Users;
    }

    private void LoadUsers()
    {
        Users.Add(new UserViewModel("Alice", "Online", "Assets/alice.png"));
        Users.Add(new UserViewModel("Bob", "Offline", "Assets/bob.png"));
        Users.Add(new UserViewModel("Charlie", "Away", "Assets/charlie.png"));
        // Add other users
    }

    private void UserGridView_ItemClick(object sender, ItemClickEventArgs e)
    {
        UserViewModel user = e.ClickedItem as UserViewModel;
        Frame.Navigate(typeof(UserDetailPage), user);
    }
}

4. Improving User Interface

To enhance the UI, we can add various visual elements. For example, we can change the color based on the user’s status or add animations to UI elements to enhance responsiveness and visual appeal.

4.1 Displaying Colors Based on Status

We will add logic to change the background color based on the user’s status. For example, we can set Green for online users, Red for offline users, and Yellow for away users.


private void LoadUsers()
{
    Users.Add(new UserViewModel("Alice", "Online", "Assets/alice.png"));
    Users.Add(new UserViewModel("Bob", "Offline", "Assets/bob.png"));
    Users.Add(new UserViewModel("Charlie", "Away", "Assets/charlie.png"));
}

private SolidColorBrush GetStatusColor(string userStatus)
{
    switch (userStatus)
    {
        case "Online":
            return new SolidColorBrush(Colors.Green);
        case "Offline":
            return new SolidColorBrush(Colors.Red);
        case "Away":
            return new SolidColorBrush(Colors.Yellow);
        default:
            return new SolidColorBrush(Colors.Gray);
    }
}

4.2 Applying Status Colors in XAML

In XAML, we can use a Converter to represent status colors in the DataTemplate. This part can directly be implemented in XAML, so let’s check the modification points in the code.



    
        
        
        
    

5. Testing and Debugging

After development is complete, it is essential to perform testing and debugging. In addition to verifying the click event on the user list and the correct display of the list, you must check responsiveness on various screen sizes.

5.1 Writing Unit Tests

It is advisable to write unit tests to ensure that the user list functionality remains intact when code changes. This allows testing of the loading and responsiveness of the user list.


[TestMethod]
public void TestLoadUsers()
{
    var page = new UserListPage();
    page.LoadUsers();
    
    Assert.AreEqual(3, page.Users.Count);
    Assert.AreEqual("Alice", page.Users[0].UserName);
}

5.2 Exception Handling

Handling potential exceptions in the code will enhance the user experience. For example, we need to implement a way to display an exception message to the user if failing to load user information due to network issues.


try
{
    LoadUsers();
}
catch (Exception ex)
{
    // Log the exception or notify the user.
}

6. Conclusion

In this post, we learned how to modify the view of UserListPage in UWP. By leveraging XAML and C#, we were able to create a dynamic user list and improve the UI and interactions, enhancing the user experience.

The UWP platform is attractive due to its easy-to-use APIs and various features, holding many possibilities for the future. Keep learning and experimenting to implement your desired features. Welcome to the world of UWP development!

7. Additional Resources

If you would like additional resources on this topic, please refer to the links below:

8. Questions and Discussions

If you have any questions or comments about the blog post, please leave them in the comments. If you need further assistance or more in-depth information, feel free to contact us anytime. Thank you!