Blazor + .NET MAUI – the perfect “hybrid” | ODFP211

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
CARL FRANKLINE: Hi, I'm Carl Franklin. You might know me from Blazor Train, or The.Net Show, or even before that from.Net Rocks. I'm here with Don Wibier from DevExpress. How are you doing, buddy? DON WIBIER: Very good Carl. Very good. CARL FRANKLINE: I wish I was at Build and wait a minute, maybe I'm at Build. I don't actually know if I'm there or not, but we are here and we're going to talk about taking a Blazor app and migrating that or using Blazor components in a Maui app. Blazor goes everywhere and it even goes into a Maui app. You can build Maui apps with XAML, or you can build Maui apps with Blazor and you get all the benefits of the Blazor component model like the easy binding and all that stuff. XAML is a little trickier, but here's one caveat that I learned. You can't on the same page combine XAML controls and Blazor controls because they are two totally different systems, but you can have XAML pages and Blazor pages, and you can navigate back and forth between them. This is all stuff that I talked about on The.Net Show. But you have a demo here, a Blazor application, and you're going to show us how it works, and then we're going to see it in use in a Maui app. Tell me what we're looking at here. DON WIBIER: Yeah, absolutely Carl. We have obviously a set of very nice Blazor controls but we also have a set of Maui controls. I'm going to show you how you have a Maui application and how you can incorporate your existing application which you build on Blazor into this Maui application. It's absolutely cool. It will save you a ton of work. CARL FRANKLINE: Sure. DON WIBIER: Yeah, let's have a quick look. I have set up a small Blazor server application here. Let me quickly run it. We'll have an idea of what we're looking at, and here it is. What you see here is a page that holds our DevExpress data grids. We have some grouping enables and it shows a list of issues. CARL FRANKLINE: Very nice. DON WIBIER: In this case, we have a click mechanism that once you click on one of the items, to go to another view and you can see the details of this particular issue and here we can go back. CARL FRANKLINE: Okay. DON WIBIER: Yeah, so then we have a couple of things which are out of the box in the Blazor data grids. Well, let me find one. CARL FRANKLINE: Make sure that you picked one where those things are little. DON WIBIER: Yeah. CARL FRANKLINE: Prior we go. DON WIBIER: This works out of the box here by just enabling it. What we also did is that we have a grid which has a number of columns. You can actually customize that and show or hide columns or change the order. CARL FRANKLINE: Nice. DON WIBIER: This is all standard behavior. I won't go over too much into detail over how we set this up but there are a couple of things that are important to mention and that's why we're going back to Visual Studio. As you can see, we have the server application and I also have a shared project. The shared project is actually a razor class library. Because what we did is, and that is something that you can also do with an existing Blazor application. You can move your components out of the application project and move it into a class library. Because what we did is very simple, we have a grid control, and that determines whether to show the grid details or the grid list. These controls are also in here. The list is holding the grids, I had a DevExpress data grid with all the settings and everything in there. A couple of things are interesting to mention, but you will see that once we import this into the Maui app, yes, it's a typical and invisible component basically a Blazor component which allows us to bind certain breakpoints off the device to a property. CARL FRANKLINE: Nice. DON WIBIER: What this basically does is that whenever the browser that runs the application has a max with 400 then it's going to toggle a small device property to true. CARL FRANKLINE: Nice. DON WIBIER: This is typically a bit bootstrap-ish but we can do a bit more with this. If the minimum width is 401, then this property is going to be true. CARL FRANKLINE: Nice. DON WIBIER: These properties are just down below here. Here we have the Boolean small and large. Now, we can use these properties to the visible properties of certain columns in the grid. What you see is that if we are looking by default on a large device, this column, the fixed date will be visible. While if we're on a small device, this will be false and this column will automatically be hidden because of those break points. This is the typical-merged trick and specifically for grids, and we're going to run it on a mobile phone so that it's like a bit of a smaller screen, so we want to not outline all the information. CARL FRANKLINE: Yeah, exactly, only specific properties or specific columns. DON WIBIER: Exactly. With these breakpoints, it's very easy to set that up. But the main point, if you want to migrate into the Maui app, you'll have to make sure that you have your components set up in a way that they can be put into a class library. What we also did in the class library is our data which shows the issues and the users, etc but that's beyond the scope of this demo. This is typically what's been done. What leaves us then in the Blazor application well, if I go to the pages and I go to the grid page, the only thing that we have here is the grids which was in the Cloud standard. CARL FRANKLINE: So that's a grid Razor component or Blazor component. DON WIBIER: Yeah, exactly. We have put all the components into this library. How can we get this into the MAUI app? Well, for that, I have already prepared a Maui application which is also in the solution, and it has a couple of pages, and it's got a couple of things here. What I did, I created a Hybrid Blazor Maui application that is a project template that comfort Visual Studio and that allows us to run Maui controls as well as Blazor controls. If we're going to take a look at the program she asked and we'll see that we have added some stuff here. We are using the DevExpress controls. We use a couple of other things which are interest here, the MauiBlazorWebView, obviously because this makes sure that we're able to host those Blazor pages inside the MAUI app in the web view. CARL FRANKLINE: Basically, you still have a main XAML page but the only thing in there is this web view, which is a very lightweight web control. That's exactly what you need in order to show Blazor content. DON WIBIER: Exactly. That's also the reason why you should go for the Blazor MAUI hybrid projects because it sets it up altogether for you. What we also did in this demo is we have created a couple of MAUI views. CARL FRANKLINE: Or pages. DON WIBIER: MAUI pages basically. Obviously, a best practice with MAUI you see MVVM design patterns. We have a couple of few models here as well. CARL FRANKLINE: I should note that that's really necessary for XAML pages which you are combining XAML pages and Blazor pages. The XAML pages have the MVVM and the ViewModels, but the Blazor pages don't. DON WIBIER: They don't need it. Not exactly. This ViewModels, they come with the MAUI views. As you can see, we have a folder pages where we can put in Blazor pages basically. If we go to this one, you'll just have a regular Blazor code. What I also did is obviously I put a reference after class library to introduce MAUI application. We'll have access to everything that comes in the Blazor class library. CARL FRANKLINE: Nice. DON WIBIER: Let's take a look at what we already have running now. You have an idea how our existing MAUI app looks. Did I mention that we put some DevExpress MAUI controls in this app as well? Let me reload it. Here you see our MAUI app. It does not include the grids yet, but we're going to do that in a minute. Let me log in. CARL FRANKLINE: By the way, this app is a public repo. You can just go download it and use it. DON WIBIER: No problem. This is one of our controls that is just displaying these blog posts. These are also DevExpress MAUI controls. If I go to the analytics, what you'll see here is that we already have chart for MAUI available as well. These are native MAUI controls in a native MAUI view. CARL FRANKLINE: This is XAML. DON WIBIER: This is absolute XAML. You can also see it right here in the MAUI view. We have the PageViewAreaChart, we have the ChannelsDonutView. This is all the stuff. What we're looking at right now. CARL FRANKLINE: Nice. DON WIBIER: If I will go to the tasks. This is actually hosting that GridPage.razor. It doesn't have anything yet, but you can see that as well and the code there is nothing in there yet. If we want to load in that functionality, it is really a matter of including that grid control, which is coming out of the Blazor class library. Because that control is basically self-containing, so it has everything it needs to display the data, I get the data, etc. This is all we need. If I would rerun the application, let's quickly do that. Then we're going to log in again. Here we have the native MAUI XAML. Now will be loading our grid. CARL FRANKLINE: Nice. DON WIBIER: As you can see, remember that I talked about those breakpoints, the breakpoint control. As you can see, we only have two columns here now. That is because we have coded that functionality already in the grid Blazor control. CARL FRANKLINE: Very cool. It has all the other features that it had in the desktop version. DON WIBIER: For sure. You can filter on one of those guys. Let me see that we pick one that is actually in the list. I see. CARL FRANKLINE: Mike Rollers there. DON WIBIER: Rollers there. You see this is just working exactly the same as it did on the Blazor page. CARL FRANKLINE: I need to just point out and reiterate here what you're looking at. You are looking at the same Blazor control that was running in the browser on the desktop. This isn't an interface-compatible MAUI control. DON WIBIER: No. CARL FRANKLINE: You're using the same control. It's the same code. Just running on a MAUI app, on an Android phone or whatever. That is really, really exciting. DON WIBIER: It is. What we also did maybe you remember that on the Blazor app we had on top of the grid, we had this column chooser. But because we have these responsive features that just work in MAUI as well as you can see, we now have that button here. Now we get a column chooser, again, but now it is totally geared toward a mobile phone in this case. CARL FRANKLINE: It's a responsive. DON WIBIER: Exactly. Now I can actually say, I want to get rid of the assignee. I want to put the status in. Maybe I want to have something else. Well, but still everything works as expected but because it's responsive, it's displayed differently. CARL FRANKLINE: Don, this is great stuff. I can't think of any questions, but because it's just IJW technology, the MAUI team has done a great job of letting us use Blazor everywhere and now it's no exception. It's funny right after we're done with this recording, I'm going to be doing a demo for a user group, showing them how to write a WPF app with Blazor. Isn't that crazy? DON WIBIER: Yeah. That is totally cool. CARL FRANKLINE: Well, Don this is great and thanks a lot. Where can we get this? We show the URL here on the screen somewhere? DON WIBIER: We're going to put this on GitHub and you can just download it. Make sure that you install our components as well. You can test them out for 30 days and even use our unmatched technical support for any questions. CARL FRANKLINE: I agree with that. It's great. Thank you Don. Everybody out there have a great time at build. DON WIBIER: Absolutely.
Info
Channel: Microsoft Developer
Views: 11,267
Rating: undefined out of 5
Keywords: .NET, .NET MAUI, .NET apps, Amanda Christensen, Blazor, Blazor + .NET MAUI – the perfect “hybrid” | ODFP211, Build on an intelligent app platform, Carl Franklin, Don Wibier, English (US), Hybrid, Intermediate (200), ODFP211, On-Demand, Visual Studio, build, build 2023, microsoft, microsoft build, microsoft build 2023, ms build, ms build 2023, msft build, msft build 2023, w1m5
Id: kjKpZAgXLFY
Channel Id: undefined
Length: 17min 57sec (1077 seconds)
Published: Wed May 24 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.