Updating a Pluralsight Course - Showing Dialogs with Prism

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
well hello hello hello everyone how's everyone doing today Michael Ponte one what the subscription Wow before I even came on line thank you very much huh what shirt do we have on today actually a little bit of a Boise State Broncos support I'm actually curious if we're gonna have a football season this this uh this year I don't know we'll see how it goes right so this virus thing plays out so right now a lot of people are probably watching the live coders event I was watching it so I don't expect a hand but a handful of people today because how many people actually want to watch me create slide decks and demos for a Pluralsight course oh man I was really excited because last Tuesday we finished an entire module in one stream that means we only have one module left one and we're working on it today yeah definitely I tried but my computer has forced me to watch this you must have the Bryan model the one that forces you to watch all things Bryan so what's everyone been up to what some cool projects you all are working on that's what I want to know everyone's asking me what I'm working on I wouldn't know what you are working on being your sister this is my favorite stream well thank you death knight I appreciate that that actually means a lot oh and I have I have a new feature that I'm trying out right now let's see let's see if I can get this to work uh-huh ah look at that wait wait over here overlook it right there so it's called feature chat to where I can feature a chat message so I find it might be more useful like if I'm not in this talking mode right and I'm coding and I get a question especially for you know YouTube backups right so if you're watching this on YouTube I'll be answering a question and no one has any idea what question I'm asking right so I'll highlight that message to give some context to what the heck I'm talking about code stencil greetings good to see you know so yeah no I haven't quite figured it out right but I'm working on it I'm working on it oh we got some duels going on already and it looks like one pocket pimp can afford a battle royale best way to start the stream spike Dooley that's right Dule away battle royale has been redeemed by one pocket pimp all right well I'm gonna wait for this this duel to finish their def night is the victor all right battle royale whoops spell I still can't spell there we go Java can you ask me a prism question of course you can't ask a prisoner but this is the perfect time because everyone is battling it out right now what's your question Java shoot get it Battle Royale like you okay lame joke okay can I have you also have regions or only no okay oh hold on this is a great here we go here we go Boop so the question is cannoli views have regions or just my show of course views can have regions too and you can have a view inside of the view inside of a view that has a region that has a region it is unlimited of where you put these things it doesn't matter put them wherever you want oh oh oh the quote oh there we go let's say the question was covering the battle royale someone's getting that Oh almost had the health oh that's awesome I don't know I think I think Michaels got this one Michael is the Victoire of the battle royale Dan how the hell did you do that do what do what what are you talking about Dan what are you talking about what are you talking about I don't know what you're talking about are you talking about how do I do this how do I do that [Laughter] uh I'll chat with you after after the stream I'll tell you how I'll tell you how I do that I just discovered it today actually yeah you got to fix these Brian buck point issues I don't know what issues please tell me one pocket pit what issues I do need to figure this out maybe something to like configured right am I not seeing things that are people are redeeming thought I saw at that time yes please give me feedback on the Brian bucks I need to figure out all that stuff channel points is separate from what is assesses so you get two separate point totals oh yes yes I know what you're talking about I know exactly what I need actually it's confusing I need to rename it so the avatar system those are different like I can't connect those to the channel points I've already tried I know exactly what you're talking about so I might just get rid of the avatar points yeah it's it's a different thing like I can't I can't connect him it's just it sucks and I forgot to turn it off and I named him the same thing right I named it the same thing so it's confuse things like wait I just won these Brian bucks how come my totals aren't updating yeah because those are the channel points are different so I'm going to have to turn off the currency portion of the of the avatars because yeah it's really confusing so code stencil ooh hold on see I need to do better at this here see this is a good little question here I can highlight whenever it just looks heavy working crud application demo of their blazer controls I asked you about this while ago when you launched your blades library that's a great question that's a great question because I don't know yet you know this whole virus thing just kind of messed up all our company priorities and you know if we had to kind of reorganize what we prioritize like how we prioritize things so the Blazer stuff actually got pushed to about July all right so we can look at July for the Blazer product but even then this could be simple sample browser I don't know if we have an actual like full-blown crud application that we're gonna be working on we'll definitely be having a sample browser that highlights our controls and their features just like all of our other sample browsers for our products yeah so I don't know I don't have an answer to that one that's a great question I have no idea huh one pocket pimp have an exchange rate from channel points to Brian bucks but then that's manual like I'd have to do that manually and I don't I can't assign see I can't assign channel points just the thing like I can't just give someone channel points right one pocket pit use a bot a lot of work but it was probably something I could figure out but I don't know how to assign channel points is the thing right death knight I'll do the manual but I can't promise I won't steal some yeah so if there's an API to assign channel points maybe I could do that but I don't I don't know if there is or not I'll have to research that I'll have to look into that but okay so today we are going to be working on the very last module I am so excited for this we have been just working along for the many many weeks now we have 12 modules in this course 12 and we're on the last one we're on the last one Oh dan says make your daughter do it she'd be motivated to have unlimited Brian bucks yep that's true so you don't assign China points yet you have users spin them to get Brian bucks ten points a book or something yeah I'll have to I'll have to completely like think how this this point system works and how I can tie the Avatar points into channel points or vice-versa but what do you get for avatar I don't even know what you get for avatar points I think you can buy bombs and stuff I have no idea I have no idea so Calla creation has a system you can ply oh let me write that down that callow creation callow creation all right I wrote that name down I'll go I'll go check that out but anyways as I was saying this is the last module module 12 Oh this seemed like such a far goal right when we first started when we were module 1 now our module 12 this one's all about dialogues the good thing and bad thing the good thing and this should be a pretty short module the bad thing is I can't reuse any content from a past like I have been because this is all brand-new concepts this is a new feature to prism that we added for prism 7 so we have to create everything from scratch so we probably have to take a separate approach today instead of starting with slides I'm actually going to start with the demos that way I could better understand kind of the content I had to put in the slide like what am I going to be talking about in the slide right and I have my handy dandy notepad here to take notes so as we're creating this I can write down some steps that I'm taking right so I think now is a good time as any to just kind of jump right into it right so let's uh let's do that like a pen and paper notepad just and a pen and paper notepad I still use those so let's go into my Pluralsight do not delete we have to create a new folder for our demos to meet module 12 that's so old school it is I have a whiteboard too just so you know Dan I have a whiteboard that I use we get up before it after folder and so this specific sample I think I'll just use the view discovery right I think we'll just use the view discovery one as the before let's look because the focus of this this is showing dialogues it's not about navigating from place to place so it's not gonna be super complicated right Dan I have some whiteboard paint to paint oh we have some whiteboard paint to paint the wall so I could just whiteboard on the wall oh that's actually a good idea I wonder how well this let me know how well that stuff actually works cuz if that's the case I could repaint this side of the wall and have a lot more space okay so let's run this yeah I'm really curious how well that would work because you know I've seen the chalkboard wall paint before and I knew some people that had that and it just kind of sucked I don't know if it was just the quality that they were using right but yeah it didn't do wonderful so Dan says it works really well had a client that painted all the walls in their office with it and the dud teams that teams he said all day oh well maybe it's the quality of paintin okay so we had this hello from view a we're gonna change this because we have to have a button in here so this is our before application we're working on so let's just kind of get this set up let's add a stackpanel orientation no no no that's not what I want that's not what I want I want vertical alignment Center horizontal alignment Center that's what I want right death night I just use a paint scraper to remove the marker I'll just paint over it every time right just paint over it every time okay so let's do this we'll say do I even need a button here I you know what let's undo that I don't think I need a text block at all I think I just used one little there we go I can stick with this I like that working in a remodeled warehouse look yeah very expensive yeah dan says what one way to keep it fresh kind of expensive but those rich folks like you I'm sure crack me up Dan you crack me up okay I think we can just do a button [Music] actually I don't like doing it doing and then our button could just say you know content show dialog uh let's throw a width on here though I don't know 175 and then a height of like 85 okay that'll work so this is all we really need right let's add a view model oh I'm gonna add new item prism prism view model and this is a view a view model right that's night I don't know but people love that look we built the new office for like five what's five million dollars and they didn't bother fixing the support columns or ceilings guess it's just that start up look even we are to start up oh my gosh how when that just be nice but it just drop five million dollars on a office space that's crazy okay so we have this view model here I really want to get rid of all this crap I don't like any of that yeah yeah well all I needs a button xmlns prism equals prison library and we need to turn on the prism view model locator true okay so we got that working I would know I'd love to drop even 100k on an office space dude I love to drop like okay I'd love to drop just a thousand dollars on office space what are you talking about depth I Spit that on beer damn it the don't beer alright alright okay so now we need a command call this the show dialog command will add this to our view model and make sure V model here delegate command we don't need a we don't need a parameter type so let's just be a basic delegate command show dialog command right show dialog van equals new delegate command show dialog and we'll generate that method and we'll make this public okay that that seems to work so let's just hit a breakpoint make sure everything's uh everything set up properly it would cover the chair but barely wouldn't cover the camera he's it nope actually $1000 would not cover the camera I'm using I actually had to buy my camera in two parts I had to buy the camera and then I had to buy the lens separately okay then we have our show dialogue perfect okay so we have our before this is a good before very basic I think this is gonna work just fine let's close this out oh I guess I need to do this showing dialogues and then oh wait a minute I'm doing this all wrong what the heck is wrong with me this is what I need showing dialogues looks like my brains not working today either yeah out of reach for me I don't have as many github sponsors as brother actually my company paid for my camera I don't have enough github sponsors to pay for my camera I have enough github sponsors to buy lunch but no a dinner once a month I can buy a dinner once a month but you know what that's better than nothing I will take that all day all day well yeah a state a steak dinner of course I eat steak now give me a nice steak but I drink water because I probably afford the drink after the steak but at least get the steak oh no not a ruse Chris steak freakin roots crisp and oh my god those they're way overpriced way overpriced okay so now we're in the after so in this demo what we want to do is we actually want to show show a dialogue and so what we have to think about here and I'm gonna need your help on making this decision it's where we place the dialogues okay I kind of have a feeling I don't know if you agree with me or not but I kind of feel like we should put the dialogues in the main executable but be able to show them from the module right because that kind of shows like the decoupling aspect of prism and how you don't how the dialogues can be defined somewhere else right they don't have to be part of the module you're showing the dialogues in so I'm thinking maybe the dialogues go here and we put we show it in the module I think Musco are you a full-time developer and what kind yes I develop full-time for infra districts and actually I do more than just development right I do its I do a lot okay I remember going over this list one time and it was quite extensive but so besides working for a company full time I'm a salaried employee not hourly so they get to work me to death and still pay me the same amount no matter how much I work but I love my job so it's it's like a hobby is it's not work to me right but yes I do I write product I support product I help market products my position products I help a sales customer support I also maintain the prism library which we were talking about today you know like I I do a lot plural site courses I always got my side hustle that's for sure I always get the side hustle you know you do the streaming as I speak at events I run events I don't know I need I'll just put this on my blog so I could just like point to it because I forget what I do sometimes I do so much I just kind of forget right but I primarily dabble in the desktop a primarily primarily known for desktop and mobile but I've been dabbling in the web space just a little bit a little bit of dabbling right Alex greetings thanks for joining so Dan why not do two modules a dialog module in another module that uses the module dependency because that's overcomplicating when I'm trying to show right huh yeah Dan sucky death knight mentioned 40 hours a day isn't a lot no it's not a lot I work probably 43 hours a day at least and I recently I've been really slammed recently I've been big-time slammed okay I think I'm gonna go with creating the dialogues in the root project and then we'll show them via the dialog service in the module so what kind of okay Dan I call BS you have a wife and kids they wouldn't let you work that many hours today you don't know my wife or kids that well no I see my I see my wife and kids for about two hours a day yeah I'm working the rest huh Alex I feel pretty lazy with just 30 ish hours a day okay let's start with creating I think I'm gonna put these in a new folder hey how come I didn't get to rename that that's weird we'll call it dialogues what kind of dialogue are we gonna create here I'm thinking maybe I don't know shoot just uh I don't know a message dialog what do we want to call this thing what kind of demo we're gonna show what kind of dialog it just needs to be a simple dialogue pop-up like I want to show this we'll call it a message dialog how about that a message dialog that works so hmm no I'm not building a wizard that's for sure I actually built a wizard control for the which we call it the extended WPF toolkit have has anyone ever heard of the extended WPF toolkit I'm just curious because a lot of people don't know that I actually created that that is my baby I started that project on codeplex back in the day when it was CodePlex with one control and I just started building and building and building controls and it got so popular that the company accedes said I want to buy this open-source project from you I'm like you know it's open-source right you could just take the code and do something with it and like no no we want that we want the repo we want everything well you want the branding we want it all make all rightie it had an MIT license death knight it wasn't stealing like it's open-source it was MIT like it it had a very flexible license like you guys could take the controls and just use them but nope they wanted to buy them outright so I'm like hey no problem so uh I wound up selling that project okay is you know what let's go to let's go to prism github because we actually have documentation for this Alex yes that is really nice for a company because that company could have just taken it and done and made their product out of it and you know just whatever but no they actually bought it and they continued it that's the great thing about what he did is they kept it open source and they kept improving it and supporting it and adding new controls awesome it was awesome and I think it's still still good now let's go to our releases because I made some notes on this dialogue service and I just have to find it that's not it this one this one right here oh look look I could yes so glad I did this those release notes really came in handy didn't he so this demo might actually be quite long if I were building this from scratch huh hmm Dan it to think someone stole the Aurora library and remarketed as their own and James even promoted as dotnet cop wow I did not know that Dan that is nuts Wow Alex I was about to compliment you on your taste of music until I realized Spotify was still running actually this is pretzel Rox this is pretzel Rox this is a free streaming music and it's supposed to be on the chill station so like chill music we're just chilling out let me know if the music's too loud I can turn it down some Dan nope they really don't of course they also couldn't even come up with their own logo they just took the reactive they took every flow go Dan music a good volume okay cool that's that is shady that is some shady stuff that's right so what is the dialog service in a nutshell okay great question oh hold on hold on let me let me try my thing see I need to make this a little easier to do because right now I'm I'm not very like quick with it right so what is the dialog service in a nutshell so what the dialog service is it is a simple interface that will allow you to show dialogues in your application from view models so a lot of people like for example let's say I'm in this view model and we want to show dialog you may see something like a message box dot show right this is horrible like you would never ever want to do this ever for one you're mixing concerns you never want to have a view object inside of your view model especially a static view object like the message box and which is very specific to a platform so what we want to do is we want to abstract that UI portion away from the view model is where we keep it testable maintainable extensible all those great things you get with using interfaces and decoupling your code but we want to keep the functionality still be able to customize our dialogues per platform so for example if I was sharing this this view model across multiple platforms I can still have one eye dialog service that I call but each platform will have a different implementation the code doesn't change but the it but the UI will it's pretty cool and we'll see that as we get into this right so essentially it's just a service that lets us show any dialogue we want without having to actually reference that dialogue okay and so let's start by creating our dialogue first I think we have to create the dialogue first just what I'm thinking so we'll create the UI now why is it at 6400 let's go with what am I do here what did I do here we have the view model yeah so I guess we need a view model okay you know actually I could probably just copy and paste that stuff maybe I can reuse some things so let's add a new class we'll call it message dialog view model okay I'm just showing that actually the eliminate confusion I'll delete this view models folder cuz you could put your I want to show that you can put your view models anywhere you want you don't have to put them in a view models folder okay ha Dan huh why am I supposed to be jealous I'm not really jealous of anyone I don't know about that ok so let's say let's do this now this is gonna be tricky this is gonna be how am I going to show okay so let's write let's just keep writing and we'll see how this kind of flows right I'm going to basically take this and I've got a copy and paste this just this part you know what no I won't I won't copy and paste it I won't copy pick because you want to see how this is implemented like we want to see how this is done like no copy paste let's just do it let's just do it i dialog aware cuz it's not it's not bad ok so we have a title we would just do this this is going to turn my what's gonna be my message dialogue ok can closed we can return true on this so this interface has a few properties and methods on it that we must implement ok what is the title this is going to be the header of the dialogue window so we want to provide that we have a canned close method this method is used to determine if we could even close the dialogue we have an on dialogue closed method which is fired when the dialogue has been closed this allows us to clean up any resources or you know do any things to kind of tidy up when the window closes and of course we have on dialogue opened this is when the dialogue has been opened it's get a list of parameters to allow us to populate this dialogue with any data that we've passed to it so now it's time to kind of start implementing actually we don't need any of that our view models so if we look at our dialogue this is a custom designed dialogue we did a message and we need a closed dialog command so let's go ahead and implement prop P string message okay got that and then we need the dialogue command Delic command of what is this we're passing true so a nullable bool will work close dialogue command I think that works and so we're gonna need sea tour here close to a log command equals new dialog command close dialogue it's kind of what I'm thinking we'll call that parameter and that's basically it I mean I think that's essentially what I did here yeah oh I did it as a string though I mean I could do it as a string maybe that's better maybe that's maybe I should do it as a string dan you should put your viewmodel in the Fred Dame space well you know what let's do this as a string [Music] okay so essentially when I talk about creating this V model we're gonna create a dialog we're gonna define this dialog with a text box that's gonna hold a message and then make the command a button that voc's a command to close the dialog right Jabba must make Delta command public did I forget that I always forget to do that thank you very much thank you very much uh and then what else I think that's it I think we're good there okay so first we create the dialogue we designed the dialogue okay this is a message dialog all this gonna do is show message and we're gonna close so we need a text and we need a command now we implement our dialogue now our dialogue has to implement I dialog aware we kind of talked about that I walked through that we had our closed command close dialogue and to do that we just call request close dot sweat invoke and a dialog results oh yeah forgot about the result and that's what I did here close dialog raise requests close okay so this is more like a base class we don't need to do it this way now what I can try to keep it as simple as possible right Moscow I'm learning c-sharp at college the algorri people still use this language I thought its deadly that's hilarious that's hilarious so must go where are you from where are you joining us from I'm curious so I think I'm just gonna do the results let's do it okay so with the dialogue when we close the dialogue this to close the actual dialogue we have to invoke this request close okay so we need a whoops request clothes invoke right we need to essentially pass a result to it and so one thing I didn't do that if we look at O Israel mice so what we want to do now in this sample I gave online this is more would you would use like a base class almost you don't have to do this way so we're just gonna use this right here right yeah I think us for this for this demo right for this demo I think we should keep it as simple as possible so we need a dialog result equals new dialog result and what are my options actually what I do I don't know if I like doing it that way what I did here was I just created passed in a new result I'm I could do it that way too that's not bad that's pretty simple that's pretty simple so we'll say none and then so if parameter equals what parameter equals what what are we saying true no why not just copy what I did so what I'm too lowering it although I think I don't have to do that I'll remove that want to keep it simple keep the code as simple as possible okay so what we're doing here what's happening is if we go back to our message dialog when our use it we're gonna show this dialog and when the user clicks this button this is going to close the dialog and I want this command parameter to be true actually this is overcomplicating it I think this is over complicating this example let's do this let's get rid of a parameter we don't need a parameter we don't need it I'm over MC this is what I'm talking about I'm over complicating it let's keep it simple okay keep it simple now the reason I don't need that so in this web example I was giving here i was showing like you could have different buttons one can close it you could set your you could change your results like it was it was a different I was showing something different okay in this case I know that this close button is only meant to close the dialog so we request close invoke new dialog results and we'll pass in button results dot okay and that's all we have to do to close it that makes so much more sense now okay so we'll come back okay ooh so for the message we're expecting the parameters to contain a message property or parameter all right so now we have to show this thing so the first step is we actually have to register this with the container so could container registry register dialog right and this is what I call it the message dialog at our using statement whoops whoops whoops whoops whoops there we go and I'll register the message dialog view model with it and I will not give it a name I would just call it message dialog okay perfect so we have registered our dialog now so now the trick is how do we actually show this dialog so the dialog is defined and this assembly okay and this in this project the executable so if we look at our module a project we could see that there are no references at all to this executing assembly because this is the main executable it actually will reference module a not the other way around but we're going to show a dialog specifically this dialog in this module in this project and to do that we're going to simply we're going to create a constructor for our view model all we have to do is ask the I dialog service add our using statement let's go ahead and create a field to store that bad boy now I guess a dialog service and we could do show or show dialog I'm gonna say show dialog in this case the name of the dialogue it's the message dialog how do I know the name of the dialogue won't remember we just came in here and we registered this dialogue by default the name of the dialogue is going to be the name of the type okay so if I wanted to give it a custom name I could say my custom dialog right well we didn't do that so the default name of the dialog is the message dialog Dan it's really freaking difficult to work with a puppy that likes to sleep in my feet constantly doing gymnastics to avoid stepping on this dog yeah I know I've been through that phase totally not a bot totally not a putt make sure to follow I don't know if you're really a bot now I I don't know you got me then we have to pass some parameters right so in this case our dialogue is expecting a message parameter and we're gonna pass it a message and so whatever this message can be we don't know what this message is let's say new dialogue parameters a rut net or is it Aurra iraq net thanks for the follow I appreciate it so we have a couple different ways we can declare some parameters here I you know what for it to keep the code easier to read I'm thinking maybe I should do this okay something like that PD and hello from view a view model this will keep the code a little easier to read for this demo so we can pass that in so we pass in our parameters and then we got a callback okay this allows us to handle when the dialog closes we can respond to that event and we actually get the result we can see what the result is and any parameters right so if for example results dot parameters equal or not parameter sorry huh results dot result equals okay then something happens we do something I don't know what we did well we do something Alex that's not too far from dependency injection is it my programming knowledge built up some rust this is dependency injection this is exactly dependency injection that is how we are getting all these services right we use dependency injection for this let's do this okay so now let's go ahead and run this yes Alex you are you're very clever so now let's go ahead and click this button and see what happens what happened it's not working it's not working oh wait I'm not even hitting did I not hook up my button show dialog command on a wire phew a view AV model show dialogue oh wait nope wait a minute public I'm not hitting my breakpoint my command is not invoking what I do what I do wrong what are they wrong hmmm alright let's let's double check something let's make sure we're getting a view model we are getting a view model we are getting our dialog service but I click the button let's look at our call stack our output let's get our output let's look for any type of data binding errors which I'm not seeing any data binding errors that means it's all hooked up right did I spell it right maybe I misspelled something I thought we tested this didn't we test this I'm gonna close that that's right okay binding auto wire this is very interesting isn't it that's fine it's showing initialization of command of duck commander's and wrong constructor oh is it oh my god oh my gosh thank you thank you me something oh man I don't know what I would say I didn't see I already had a constructor I created a new one okay thank you that was it thank you all right now what's supposed to happen is we're gonna click this button and we're gonna see this dialog there it is right there here's our dialog and so the next expectation is hit okay and it closes right and so what happens here is when it closes in this method here we can respond to this result right so this is that callback where we check the result is the button okay are there any parameters we're passing back whatever the case may be we can handle that so for example if the user show if you show this dialog of the user hiks hiks the X button right what's the result the results none so you know that the person who closed the dialog didn't hit your okay button right because we coded in our message dialog view model when they hit this okay button it's going to close the dialog right here request closed and that's it we're gonna pass in the result which is okay we could also pass parameters if we wanted to right so you know for the for the purpose of this we should probably which I should probably do this cuz remember this this demo is getting is meant to teach people how this functions so I should try to really make things more explicit and then we'll pass in the button result no like this right we could do far parameters those new dialog parameters right maybe we add a parameter whoops I don't know test value I don't know if you come up with a better test parameter name that's fine and parameters how about just my per am that we could do my value something like that okay so as I as I go through this demo we could talk about this and I can show how this kind of works okay and then I can show here if the result is okay then we can do var parameter equals r dot parameters get value string my ramp my per am it's a my program I forgot already yep my prim I think that works and so we could come in here show our dialogue we hit okay and we got our parameter my value there it is so I'm thinkin maybe we should modify this a little bit I think maybe we should have on this view maybe we should have a some type of title or result or something like that right some type of text block maybe I should do something like this actually let's put this in a stackpanel have a text block let's do message maybe write something like that maybe maybe we should do that or no let's call it result now that's confusing is too much result it's too much result let's call it message I got a name there's something else I don't know what I'm gonna name this caption I can't call it result I can't call it that it's too much result going on too much result going on not title I don't to call it title call it uh any any ideas out there we can call this demo or this property for this demo I guess message message is fine message at work I just we have message here you know well rename that result message message received oh those are good ideas actually Mesa is fb5 I like both of those actually let's go with a result message art how about dialog message you know what I like that I like that b5 a little better message received cuz that's what it is it's the message that we've received right look if I can spell now I want to rename give me a rename oh that's what happened free name okay all right I think that's a little better why did that rename you know what just happened to me do you ever look at a word so many times and they just are looking weird for some reason when I look at the word message it just looks weird now I don't know it's a weird looking word just looks weird all rights go back to our view a and we'll update that I think we're gonna have to set our or as our vertical alignment to Center horizontal alignment to Center let's put some margin on this I like 10 just make the font size a little bigger maybe 36 maybe oh maybe we'll see what this looks like almost on a daily basis Alex yeah well just looks weird likewise that looks so weird now so let's do something else as well let's go back to our message dialog and let's just set a width and height on this with what 350 height 400 something like that maybe let's run it let's see what we have right now now since we made changes we're going to oh okay now that we're gonna have to go update our before app just a little bit ooh no that's too big I need something more like so I think our width was good whoops sorry I think the width is good I think I need to bring down actually the width is probably too big maybe something like that something like this okay we got to do some design work okay what are we gonna do what do we do when we do with what 150 no no that's too much 200 hi 150 what do we got a little better a little better I think my width actually needs go wider 400 bring the width hmm you know what maybe maybe maybe we don't mess with the width actually I think this is gonna lead into I wonder if this is gonna lead into another topic this might lead into a different demo when we talk about styling so maybe I should leave that off to where it looks weird like that because when we start talking about styling our dialog windows from a dialog we can control the width and everything of our window there to where everything's kind of resize and looks good so I think okay so I think the only thing I really want to do is maybe make this margin more like 25 I think that's what I want to do yeah that's a little better that's a little better we'll do that okay yeah this moves around blah blah and then we will mess with the styling next okay so as far as this demo is concerned I'm thinking this one's okay like we showed the basics of creating a dialog hooking up its view model registering that dialogue with the dialog service right register dialog then we showed how to show that dialog here now I'm gonna do another demo where we learn how to clean this up we're gonna make this look like a way better way better way better okay so let's do this let's close this I'm going to copy this I'm gonna delete the before we're gonna grab this after and now we'll just remove the stuff we don't care about so first we'll remove the dialogues okay we'll remove our registration for the dialogue that's gonna go away - okay Alex do you consider a side-by-side comparison with a traditional solution to show why prism is better to me this is the best way to sell me on a product I need to see the advantages well hopefully if you watch the whole course from beginning to end cuz keep in mind we are in module 12 right so we've already done 11 other modules that kind of talked about how you structure your projects and how they're loosely coupled in a regions and navigation and view injection and view discovery and parameters and all that stuff event aggregation so we've talked a lot about that already and it all those concepts kind of built on one another going forward so I think that doesn't mean isn't needed like that the that okay I think we have this cleaned up now so this is the starting point for the demo that I will record for the Pluralsight course okay well you know the one thing I didn't test I better test it right quick I gotta test it before moving forward I need to test that message receives property we added and actually I wonder since we have a message received maybe I should think about what we're sending back right the dialogue was closed so Alex I am thinking of a way to show people it's worth trying makes sense non-native here yeah basically you want to be able to compare you know what this prism get you right like why would you create your applications using prism versus just your standard code-behind strong reference tightly coupled low cohesion or high high cohesion apps wait I have the right the ones that are hard to test and all that stuff I think that's what you're getting at I don't have anything like that like this this Pluralsight course that I'm working on now it gets you there by teaching you each individual you know feature and how it works how it's built that why you would do it why you use dependency injection things like that so I want to call this something other than my per am right see so thank you for the follow great to have you on the stream essentially if you want your app to be loosely coupled highly extensible highly testable easy to maintain easy to write all the navigation problems solved how do you communicate between all those decoupled assemblies then you would use prison if you don't care about any of stuff you just wouldn't use it so what should we call this parameter we're sending back let's call this I want to rename this to be something a little more you know useful hahaha you didn't have to sell me I'd buy anything off of you huh well would you buy my mouse pad I love my mouse pad don't laugh at me alright but aside from the regents commands dialog accessibility little code what has prism ever done for us well that's a great question I'm sure it saved a few babies every now from you know somewhere it's saved a few babies I'm sure carried kids out of burning buildings like yeah okay what the heck am I gonna call this thing I can't keep using a result and message and whatever I'll just call it might what's keeping my pram by naming stuff is hard I don't want to name stuff huh Dan well that's actually true prism is used in emergency services software that is absolutely true dan there's a company I'm not allowed to say their name I don't know if I am or not so I'm just gonna say it but they are responsible for the 9/11 one software on the eastern side of the United States and their apps are built with prism so yes prism saves lives literally their dispatch software is built and architected off of prism which is pretty freakin cool really cool actually Alex you're an angel sir okay so we're sending a message to the dialog and we're getting a message back from the dialog huh deaf night so if they're any issues with EMS call Brian no call Dan he's got time to work on that stuff okay so let's let's test this so oh and then we can do something like this else message seat equals we could do a message here like not closed by user right we could do a check there so let's let's test this before we move on to styling and then we have to do custom custom windows okay so I will oh I need to make that wider too dang it okay not close by user see that close by user dialog what's close by user not close by user suite okay it worked perfect perfect perfect okay so that works well stick with this I'm still not happy with my parameter which fine whatever okay so this demo is done we're good with this I'm gonna show how to test these dialogues in the course no this is not a testing course but these dialogues are written tour they can be tested because all you have to do now is mock this dialogue service and your test and now you can test all this you could test your dialogues because if you come into your actually dialogue code behind you have an interface this would be easy to test actually on its own Joseph does infra gistic have its own mvvm framework or does it use prism ever it just doesn't have an in BPM framework we don't need one infra Geist six is a component vendor so we write UI controls that will work with prism for sure but we don't use anything right internally to build those controls controls are not meant to be to have mvvm control that doesn't you don't do that but those controls could be used in an empty view map location however we do have samples that we write that we do use prism for that chillax chillax up the war hello it's going great let's see Joseph do you have some prism and for districts crud examples with report capabilities like in voice that is very specific my friend we do not have something that's specific and all the crud samples that we do have they're gonna be very basic crud like they're not hooking up to real services or anything like that because they're simple demos right alright so I think this demo was done I think let's go ahead and create a new one and essentially one thing I want to show is I want to show how to simplify your API maybe simplify your dialogue API yes okay so let's let's copy this I'm gonna paste all that in there because what I want to do is come on come on come on if we look at our view model where we are calling this show dialog like you know this is a lot of work not so much not so much this I'm not worried about this part you're gonna have to do that no matter what but what I'm talking about is you're creating the parameter you're passing the parameter in I might want to show using extension methods to clean that up right something like public static void show message dialog right and then we go dialog service this oops string message something like something like that it's kind of what I'm thinking our white-nose not this right I'm thinking something like that but we'll still need the action I will still need this alright dialog result will still need that right huh Alex I have a confession to make this dream is pretty enjoyable and fun that's awesome I appreciate that that's always good to hear I'm not boring everyone out of their mind so yeah so what we want to do is we want to take this like just just I don't know code you can use a lot because chances are you're gonna reuse this message dialog more than once and you don't want to have to keep writing the same boilerplate code every single time it doesn't make sense so what we want to do is we want to wrap this logic up so for example I'm gonna pull this out let's put this in here and instead of that we can pass the message in directly okay then let's take this call pass in our call back whoops gonna do that okay that and then this is just a normal dialogue service so now we could take that code out we can get rid of that get rid of this okay and essentially where's my this is should be an extension method off show message dialog it should be show message dialog Oh message I need my message for one I need my message hello from from view a view model right like that you know the thing with you know I think this has to be in a static class actually so what's a public static what do we call this we can call this I dialog service extensions oh I forgot my class right something like that dan you should know how bloody easy this to make it it a sink by the way who cares about it doesn't make sense it doesn't make sense everyone is so caught up with a stupid and it wouldn't be a sink that's the thing it's not a sink it's all synchronous you're just faking it to have some stupid async/await API this is not a sink I hate that hate it it's so annoying I sometimes I wish the async/await was never invented and we just kept doing multi-threading the old complicated way because at least you knew at least you knew exactly what you had to do to get the synchronous code to work now everyone's like oh add sink async/await that does not mean asynchronous code just so you know that does not mean multi-threading I'm just saying huh yeah nope nope nope nope nope not gonna do it so now what we've done just so you know what we done is we've now pulled out this you know message dialog show message dialogue we've encapsulated all that's logic for creating the parameters creating the you know the the parameter name anything that we want to throw in there right this is this makes it so easy now because you're gonna have more than one dialogue in your application in a production application you're gonna have more than one and it's again it might have a ton of parameters like you might want to add another parameter to this like so it could be like int age right like you have all these different things and you don't want to have to keep like writing a whole bunch of boilerplate code the the point of prism is to help you get your initial architecture structured properly set up for success right we don't try to solve everything for you so the dialog service API is there to help you show dialogues in a loosely cup testable way but we're not going to try to like guess at everything you want by creating your own extension methods off the dialog service API you can now start encapsulating all your more complex logic to where the consumer of the dialog service when it passes parameters it just passes the parameter doesn't have to create a parameter object doesn't have to add items to the parameters collection none of that mm-hmm right so I think this is pretty cool I think this is pretty cool right here however it doesn't belong here it doesn't it you know where it belongs this is what is this this is a dotnet core 3 it doesn't I think it's just a WPF control yeah I'll do this I'll do this dotnet core okay and I will call this prison demo dot core and I will delete this because we don't care about it I don't care about that assembly file either actually this belongs in a core project that's shared amongst your modules so everything can take advantage of it right huh a new project yeah so let's go ahead and do this and new folder I guess we call this dialogue so it's fine or could go into prism I don't know and then we'll just take this class I'll create it here and then we'll just copy and paste this out and put it where it belongs add some namespaces do I not have oh yeah I need to add manage dukkha packages prism WPF and 2 core yep yep yep you've got to do that but there's little outdated it looks like I need to update all that okay perfect close that's and now we're back at our using statements there we go there we go and actually let's think about this namespace because in order to get this to work we'd have to add that namespace in unless unless I did a namespace trick right now it a--just show up automatically in my intellisense and that little arrow you see right there that is that means it's an extension the little down arrow in the intellisense so that's a little trick to fix that up to make that just seamless right it'd be seamless dan says you should really stress that whether you're a solo developer a team of five our team of 100 should always architect your ass as though you'll have multiple teams and multiple builders working on that at the same time loose coupling and don't be afraid to split things into another project it's in fact the truth so show yo so what we have done is we have successfully abstracted away the complexity of showing our specific message dialog box and now we could come in here and we can add other dialogues like let's say oh we're gonna show the I don't know edit person dialog right maybe we're gonna edit a person object modally and we're gonna pass in a person object or a person ID or a whole bunch of different parameters here like now you could really start getting creative with what you do with your your dialogues and how you show those and all that stuff right but now you have an extension point to do that do I still need that using statement nope I don't yeah nice okay I think that is a pretty simple demo that we can do in the course to highlight how we can abstract away complexity kr Jax as a team of one the thing that frustrated me was having each project be its own repo oh my god don't do that then what I'm implementing a new feature at the change across multiple repos probably means I just need to break down problems and smaller things but managing git commits across several repos became it yeah yeah yeah yeah yeah yeah if you're a team of one I don't know why you have multiple repos for projects that are shared across a single solution if you look at prism how we actually that might be a good time just to kind of show that off the way we have prism structured right is we have our prism source code under our sole source folder and then they're separated by platform here's Forbes prism at core right and then prism for WPF and then we have our tests all our testing projects by platform we have our end-to-end apps that we do UI testing right so yeah so kr Jax is asking what's the best shared reasonable projects then say I have three prism apps Dan is saying two things that will be your friend source link and nougat push to a private feed you'll get that free with Azure DevOps yes yes so as a developer sometimes it's easier to have all your projects you know reference source code but if you're truly sharing them you should probably shouldn't do that especially if you three have three separate projects because what happens is now all those projects are building against the same source code right so if once in a broken state they're all in a broken state and you want to be able to ship and maintain your separate apps independently so app one should just reference the output from the shared project it shouldn't it shouldn't actually reference the project directly it should only have a reference to the nougat or assembly that way it can maintain its own codebase you're not forced to update to the latest and greatest because let's say you have three apps or two let's say you have two apps and both of these apps share a shared core project the actual project the core code that they reference the project in Visual Studio and project 1 and project who have been deployed and they both both have updates right or one has an update let's say that one has an update that you need to push but you've been working on project 2 and you've you've you made some changes that break the API so project 2 has different requirements and now you've broken the API in that core project but crap now you have to release a new version of project 1 well you can't you can't even build because it's in a broken State so now you have two projects that are down you can't release project 1 even though it's like a title update or something stupid that had nothing to do with the core code but because you may modify the core code it's broken you can't you can't push a bug fix you can't push an update until that course fixed so you're really creating a very tight coupling with your development process in general right so you want to avoid that at all costs when you have shared code make sure you are consuming that shared code not directly in the source but from some type of release process maybe a nougat package or you're referencing an assembly or something like that right Kay arjax bride here telling my personal story right now that's a shame yes so have a maggot feed have a local feed anything just whenever you build that shared do not tightly coupled those projects to the same to the same codebase the same shared codebase if they're tightly tied or coupled with with references you're in our world of hurt maintaining multiple projects okay so we're done here we're done here the next the next thing we have to build we have to style we have to style them now so let's uh styling dialogues and we also you know what I thought of another one custom dialogue dialogue windows so we have to we got to figure out so let's just copy this before and after that's a good good starting point whoops uh styling styling here we go okay now styling is really easy so this shouldn't take us long to do it all [Music] okay so what we want to do is okay so let's just run this I got to remember where I'm at what we want to do is we're gonna show this dialogue and we want to style it somehow we want to change some aspects of it and since we're not controlling the actual window how do we do that well luckily prism makes this easy to do I got to remember where the name space is at it might be in prism dialogue window the dialogue window I thought it was dialogue window windows startup location windows style okay prism that dialogue window style there we go it's been a while system looked into this the target type is what is the target type of window it's been awhile since I've done this I have documentation on this so let's go look at it registering showing yes simplifying it did that KKK Oh styling yeah windows style dialog unreal style okay yeah that's right okay cool we'll do that okay so I don't know what we could do here let's say said er I don't know uh what are we gonna do property how about resize mode value you can't resize it no resize not allowed no soup for you how about a width we could set the width of the window now say 400 right what's uh what's baka pill but what if I need a bigger well you control that and my world this one doesn't need to be bigger value I don't know 250 there are 200 I don't know well we'll play around with it uh let's see what this looks like there there's a window actually it's pretty good right can't resize it but another issue is you know if I drag it it's always centered it's always centered on the on the parent on the parent window right the application window it's centered on the window that it was shown from so if I don't want to do that setter property we can use the prism dialog windows startup location attached property center screen right so we can control even how the dialog appears and where it appears so that's it your screen right there I can drag it over here still gonna show those set your screen OOP easy easy peasy easy peasy lemon squeezy okay so that's it for that demo that makes it easy really easy actually you know what I should do actually let me open up a new window here dan that button was obviously oversized yes it is on purpose let's open up my course proposal because I want to see exactly what I told them I was going to talk about very last module okay yep showing dialog Kritika dialog yeah yeah you know I didn't even tell them I was gonna talk about improving the API oh wait I did right here I did right there okay nevermind so yeah styling custom dialog window okay so got you a custom dialog window now got it Alex that was fun fun hour but I got to go stay safe you guys have a good time hey thanks for joining Alex I really appreciate it it was great seeing you okay so I did say I was going to show how to simplify your api's okay so now lastly we just do custom dialog windows so I'm trying to think if we want to just continue continue from ash whoa hold on you know what I think I want to do I I think I actually want to use the one with the core project as the project going forward so I'm trying to think of how the ordered which I'm going to talk about this so first you know you have to show a dialog or should I call like creating dialogues she's probably called creating dialogues right so you have to create the dialogue then we can simplify the API then I could show you how to style yeah yeah yeah yeah yeah okay let's do this then open this back up I think I want to use the other I want to use the other project as my before-and-after so let's copy this I'm open up notepad over here paste it in so I don't lose it okay styling let's delete that stuff up is it open I already had it open okay oh don't do this to me visual studio do not do this to me can at least rename this please please let me rename this oh okay let me rename it oh thank you thank you okay so simplifying your API this is what I want right there this is gonna be our before and after GA CRO Visual Studio keeps asking it for justice license details there another way to get rid of that have a license have a license that helps yeah if you have a license you shouldn't get that so no there is no way to get around that you gotta have a license okay let's go back to our dialog I'm gonna take this window style that we had and just paste it right back in here alright there will work let me run it just to verify that we didn't break anything shouldn't have this the same code right and we said Center screen and that works perfect okay can I delete this now yes perfect okay so next it's custom dialog windows so I'm gonna take this before-and-after again actually let's let's take the style when let's just keep building on it right kr Jack's got a head out thanks for joining good to see you always have a great day have a great weekend what order did I close that word document dang it what order did I talk I think a custom dialog window should be last yes okay so this is good so I will take the simplifying no I will take this styling the before is the after okay custom dialog windows before after so styling after this is the before and then the after is what we're gonna work on sweet any community license no there is not a community license it is a paid product and I'm glad it's a paid product cuz if it wasn't I wouldn't have a job hope you understand I really like feeding my family and myself I mean free free software it's great don't get me wrong but man the whole movement towards free has really hurt companies like open-source is not a sustainable model we need to have paid for software so we can make these things right ok so what am i doing now I'm doing a custom dialogue window now so this should be pretty easy let's add a window I'm not I'm not even going to look at my documentation I'm gonna to see if I can figure this out I'll call this my custom window and I don't know what should we do what should we do to this thing binding title my custom window I think it has to implement an interface called a dialog window yep it does and this has to be a get set property there we go huh dan there's a community license the community could pay for a license yes that night I think the community is broke yes I agree the community is broke okay so that's all there is to that and I'm gonna get rid of this that doesn't know he's me so that's all it takes to have a custom dialog window but we need to do something to our window let's I don't know let's uh can we set the background color to like green or something I don't know so we have our background window let's go into our app that sample at CS and all we have to do now is register our dialog window and this is going to be called my custom window now how do we use this custom window well we have to go to where we are calling where we are showing the dialog where it says show dialog there is another wait where's my don't tell me that's not public yet don't tell me we didn't make that public oh hold on am i updated dan did not release that oh I'm updated to the latest I'm not sure if we released that feature yet well we gotta go to github we gotta go to github Oh Dan's asking what feature the feature to have a custom dialog window i navigate paint options update that little portrait crest hold on let's get alright closed PRS this is a dialog window that's a port no that's not it new changes in dialogue refactor attach properties what is that dialog window where's that pull request at modal up right here right here add support for multiple dialog windows see there is another my awesome dialog window right here on December 3rd 2019 I don't think we've released this yet hmm but that should be it right there right there right eye right there yes this is an ape we better I label this or not label project don't put this on the project wait where is it milestone there better put that there I shall put this milestone as well so I know what the heck okay so that makes it easy this will come after the fact I can update the course later when this is added death knight any idea when 8.0 will be released we are actually doing a lot of work right now on 8.0 and and we have uno platform support and when you I support coming so we're probably going to want to wait until this is in before we do within 8.0 to so whenever it's ready it's ready I mean we do this in our spare time we don't we don't keep date so we don't keep like Kanban boards and all this crate like people want us to act like a company and be you know have our development process like a profession company but you know what this is not this is like our free time whatever we can do it so when it's done it's done but what that tells me is I just made my job easier because this can't go in this course right now so really come on hurry up oh come on Visual Studio you know Inlet meantime I will start cleaning these up for to have them zipped up so if anyone ever sends a zip file of a project to somebody please go in and delete all the bin and obj folders before you do that otherwise you're sending a massive file to them right and no one wants that no one wants all that stuff so click that up yeah it's busy work kind of sucks but and plus if there are any like virus scanners they won't see those assemblies and freak out almost there sweet now cannot delete custom dialog windows yes okay now I can zip these up and these are going to be module 12 demos and module 12 bring the demos over and twelve slides which we need to do the slides we needed to the slides now but we had the demos done which is awesome right yeah see here there are times we have dates like when we need to release professionally for something it can motivate a release but that's pretty rare and I think we've only done that twice and last three years yeah that's true that's nice just mainly wondering as I want to try my hand at a few of the features just four practices how you guys do it now for the fun stuff slides oh yes oh I'm not looking forward to slides I was thinking that I would just power through and just finish finish everything today like that's I was thinking I was gonna do that I don't know I don't know I don't know if I should power through and do slides I hate doing slides I really do slide suck man yeah then you could relax to the weekend with that sense of accomplishment exactly Oh Tuesday week four yeah I'm hungry too though my stomachs growling I don't know if you could hear it on streem like it's it's pretty loud growling I know we're gonna talk about creating dialogues showing dialogues I'm gonna talk about styling dialogues and what was it another thing we did oh oh yeah yeah yeah yeah we improved our dialogue API something like that right Dan well there's always the live coders conference had like 2200 people when I came over there yeah I'd help us slides but then I need to be a mind reader exactly what we the pumpkin King before we got the numbers now you only have the numbers that people join and I don't see I don't see my my JT girl in there either but uh so if we're look I'm een if I want to do slides I kind of stub these out a little bit just now I don't know if I want to get into this right now uh you know what I'm not going to I made a decision I'm not gonna bore everyone with slides today I'm gonna wait till Tuesday to bore you on slides but we did get all the demos written which is a huge right and plus I want to put a little more thought into that document so if I open up this word document again and come back over here I'm trying to think of what my thought process was writing this because you can't show a dialog if you don't have one all right so maybe I'm just talking about the technique no different techniques for showing dialogues yeah I don't know if I should even get into that I should just probably explain you know what showing dialogues should go right up there huh deaf night no I think she has moved on got crow GA crow is it Gower GA it's an abbreviation first time watching Brian live on twitch well thank you thank you for joining I really appreciate it I always enjoy having as many people that talk to you as possible so I don't go crazy here in my home office all by myself who likes working by themselves I don't let's see you know what this is gonna wait for another day huh Dan he does this is gonna wait for another day right Joseph are you familiar with the DevExpress MVP and framework they claims the remodel complements prism and that they work separately at different levels is that true and does it even make sense to combine different mvvm frameworks oh my god oh my god okay so yes I've seen I've seen that mvvm framework I've seen it I saw it in the early early days and it's really bad when I I had to tell them you're doing it wrong and so they've improved it a little bit they've improved it some right but uh I wouldn't touch that envying framework with a ten-foot pole I'm not sure how it would complement prism honestly because the whole thing about mvvm it's not complicated it's not complicated at all view do you model model that's it your view the data context is the view model and that's just the state that your view is in that's all it is if your model just hold state that's it that's a view VM that's all you're done done stop you're done as long as you have a mechanism to set that that data context to an instance of your view model you have now implemented the mvvm design pattern okay now there are other problems that you have to solve when using separation patterns or design patterns such as mvvm commanding is one of them okay communicating between different loosely coupled view models so event aggregation is another navigation is one how do you get around in the application right but but just keep in mind that those problems you will have to solve with any pattern you use if you're in code behind you still have to figure out how you're gonna communicate with other code behind views you know how you gonna navigate around to other code behind or to other views how you get in respond to user input right so those are those problems aren't unique to mvvm mvvm in itself is very very basic like I said it's just the view the data context set to an instance of your view model and your view model holds all the state that's it everything else you'll have to solve with any other pattern you use okay and so Dan says don't effing reference the view from the view model yes right there's some separations of concerns we're concerned about there okay so actually prism has a what's the word I'm looking for a reputation for being an MPV and framework typically it's really not an mvvm framework because it's it's it's higher than that in WPF specifically it doesn't care if you use mvvm or not you can use code behind and you can still navigate use event aggregation right you can still use delegate command if you want you can still use all the features of prism with a code behind app you don't have to use mvvm you can use MVC if you wanted to it doesn't matter because prism is just guidance excuse me I'd get some water here oh my god oh my god okay does everyone see D lagunas everyone see that in the chat in the Chall hold on you know what I'm gonna use my new handy dandy tool oh wait oh she's not she's not on here why didn't you show up very weird she's in stealth mode I guess so d lagunas is my wife and i know why she's here I know exactly why she's here she was watching my stream one day and watching all of you get your butts kicked by the pumpkin King okay she said I can do better so she's here to prove it she's highly competitive so I think my wife Diana looking earnest D lagunas wants to fight the pumpkin King that is hilarious I didn't think you'd actually show up asterisk hey good to see you too see you pop in there she's at work right now actually so she doesn't come home for lunch anymore because she works at a sick clinic a respiratory clinic right now where she's treating a lot of patients who have respiratory illnesses including those with the covin 19 virus so she doesn't come home anymore because she doesn't she wants to reduce the risk of transferring the virus to us her family so she just stays home right so yeah so we don't have lunch right now together anymore and I get really lonely [Music] how do I get one of those character thingies well just start chatting and you should pop in there just start chatting and you should pop in and if you scroll down on the I don't know if you're on your phone I don't want this works on your phone actually there if you're on the website you can scroll down a little bit on my channel page and you'll see a stream avatar so you can like customize your avatar and stuff are you what are you on are you on a mobile device cuz you should have popped in already I don't I don't see you actually I don't CD lagunas in there that's strange and I didn't see you in your chat and my other tool it's like your oh oh you're there now like this like okay you're there now but are you do you have an avatar yet I'll see your avatar yet I see Brian panda jaicro Dan one pocket pimp yeah I'm not seeing d lagunas in there so yeah switch to PC and while you do that I will continue my talk about prisms reputation ahead because you you jumped in and surprised me he caught me off guard but yeah so as I was saying you know prism has this reputation of being that MVM and framework when it's more than that it it WPF it really doesn't care so whatever dem Express is doing I don't know I don't know I haven't paid attention to them in a while they're not really in my space anymore you know I worked for in four districts now I I don't really look at what they've been doing it's been typecast I still don't see her in the avatars though dan it has that reputation this find goodness guy that likes to close people to issues on github yeah I say no a lot right because prism has just about everything you need in it now and yet I just don't really nearly add new a new API surface to a over ten year old framework right I haven't seen haven't seen thei lagunas jump in yet and do someone has stream to embarrass new programmer yeah I still don't see her pop it in oh now the fighting started huh I don't see huh Oh everyone's attacking me I see how it is well you know what you think you think you could just attack me and get away with it Oh oh my god okay Diana says I'll be just a minute don't start without me oh yeah so we can't we can't fight the pumpkin King until my wife can join that's really weird I guess from mobile you can't you can't join from mobile can't join an avatar from mobile that doesn't make sense Oh one pocket pit redeemed battle royale I gotta give what the people want Oh Panda Express says they're on mobile right now and why wouldn't they why wouldn't she showing up that's alright battle royale death until the last person stands there can be only one oh wait a minute wait a minute we need some piece of music fight fight well that's a little more motivating right there all right who's got it curious you should have a create avatars of another framework to have prism avatar oh wait you know I could create a prism user give them mod status and cheat I could totally do that oh oh this looks like a executors it's gonna win this one hands down like oh and he got the health yes we know the winner of this battle that's cuter congratulations to the winner I need to figure out this battle point stuff has Dee lagunas joined yet she's not gonna let me I can't start without her she'll be mad at me we can't fight the pumpkin King without her trust me going into the weekend I do not want my wife mad at me she wants to fight the pumpkin King she will fight the pumpkin King okay check this up I'm gonna make all you guys fart you guys are nasty why are you so nasty I don't know my my chat room was so nasty smells in here too much beer okay well she hasn't joined yet all right give me questions we gotta kill some time until she gets here cuz I definitely don't want to fight the pumpkin king without her I will never hear the end of it and I can't just be her unless she had to go treat a patient reminds me of something I saw earlier when a girl filled up a balloon sticking against them oh my gosh yeah well why she had a patient come in it's probably she's not joining yet well I mean technically this would be a good time to uh to do those slides Oh death night so what are you do some live coding on prism code base that's a that's a great question I guess I gotta have something to code on it right I mean I gotta have something to code I mean if I look at the I can look at the issues are quick to see what's there I do have a bug I need a fix a dotnet core 3 bug freaking done that course where someone is actually taking on the deep link into navigation sub pages of tab tab items that's gonna be interesting I've already looked at that issue before I will be curious to see what solution this person comes up with and they're doing it live on stream by the way yeah this animal module catalog needs to be fixed I need to update the I need to update the prism template pack maybe I could do that live as well that's pretty easy though yeah oh yes the joy of done at 5 coming out I am terrified on what's gonna happen when that happens I don't know what the heck that's gonna break zamarons always breaking stuff that happens every release I need to make the project templates open source oh you're gonna open source of project templates death knight says just oh just nice to be able to see ask questions live as we go through the code yeah yeah Dan we talked about that but unless you're gonna do the work to add the command line support I don't see the point xq 3 what I'll see container to use for prism usually unity try LC Auto FAC I prefer to IOC okay so Auto fact is no longer supported by prism Auto fact has moved to an immutable container meaning it cannot be changed and due to the modularity aspect of prism we got to have a mutable container the container has to be able to change and since auto fact no longer supports that we drop support for auto fact so that leaves only mutable containers such as prism dry IOC and inject I'm sure there's some other ones out there so I've been using unity since the beginning like forever so I mean I just I've been using unity for so long that I just kind of stuck with it however I've been using dry dry I'll see more but here's the thing because prism now has its own its own IOC interfaces right its own dependency injection abstraction you have the I container provider in the I container registry it doesn't really matter what container you use because you won't know it the only project in your entire application that will reference a container is your main executable that's it all the other modules will never reference a container directly now of course there's some maybe it will maybe it won't depends scenarios on if you need to do something super custom and you need access to your container well then at that point you would actually reference your container we give you access to the container types directly through some extension methods but preferably wouldn't have to do that right but there are some cases where you will have to do some custom registrations with factories or some collections or something weird like that and in those cases you would use the containment directly for but for the most part I have yet personally to ever have to access the container directly so death diet would be interested in adding command line support to the templates is that terribly complicated no it's it's not terribly complicated and we we already have the infrastructure in place for that we just have to do it it's just work it's just time so the templates that you use with the prism template pack are already in the form of the dotnet template okay and it's really easy to add actually yeah yeah dan dan-san it's it's yeah it's really easy and he could do it on a live stream maybe I can kind of give you a peek I can kind of give you a peek into that let me find it first I have the library template pack templates okay okay okay let me share right quick so for the prism template pack we have our templates and so if you look at for example the W WPF templates we have a number of different different templates that we have and so if we go into the template that config this is where we would actually do that okay this is where we start going through right Oh a wife can't log on through my work their work PC well you know what's weird all right let me finish this up don't go anywhere yet honey I will we'll see if you show up yet but yeah so this is kind of where we set up your options and the kind of API stuff like it's it's just a JSON file it's it's really easy all it is is it just takes time right so it did do you look gonna show up you know what let's just start and when we don't we start the pumpkin king fight then type exclamation point join and that should add an avatar for you like that's really weird so let's go ahead everyone it's gonna take everybody like like no joke so all 28 people that are watching right now you have to join you have to fight the pumpkin king or you will not win okay so here we go type exclamation point join as soon as you see yes exclamation point join you're a warrior a priest or a mage you have 50 seconds to join make sure you join it's gonna take all twenty of you to beat the pumpkin king I'm sorry it is so Diana join join with the pumpkin King oh honey you didn't put the space you didn't put in a space no there's not enough of you yeah honey you missed your opportunity oh my god oh it did get me in what you know what maybe I can cancel it let's start over let's do this I'm a disconnect let's do this again first Oh join time you know what I'm gonna give people a hundred and twenty seconds to join that's two minutes okay that will work I think that'll work yeah we're gonna increase that timer to 120 okay let's here we go again here we go again alright now you have two minutes to join two minutes to join we're gonna do this again are you ready one two three wait for the chat wait for the message wait for the message now go go there's the timer Joe and Joe and joined let's go make some point join space and what you're gonna be what happened that was not two minutes that was not two minutes yep maybe it maxes out I can't imagine it would max out no Diana you're not in I don't see you in there that is really weird I'm gonna have to really research that yeah yeah you've had more no there's no limit on how many people can join or is there is there what on I'll bet just connect I'm gonna look into this hold on is there timer join seconds join repeating sound introducer sale lose sound victory sound game repeat I I don't see any settings I don't see any settings where here let me actually show you what I see I'm gonna show you what I see on this you see this okay so we can set the timer to set joint timer in seconds I put it to 120 but that was not a hundred twenty did then how many seconds you have four turn right I'm thinking maybe we should up that to maybe to 30 seconds for somebody have text-color back I mean that's it there's no there's no limits there's nothing we can play basketball battle royale duel and wager roulette slot machines but yeah this is a no right here 120 seconds there's no limit very strange very strange indeed I'll have to do research on that so I don't know I don't know if you guys wanted to whack at it anyways let's try let's just see I want to give everyone the opportunity to fight the pumpkin king so have your exclamation point join space what you want to be ready cuz I'm about to start it and maybe it's a limit on the number of people who can join that would be stupid though everyone let D look you in his head first I don't know why she's not popping up and chat honestly are not in chat but in the avatars okay here we go I'm starting wait for the wait for the message from my chat bot there it is excavation point join Diddy Walsh didi good to see you you've missed the pumpkin King fight though we just started minute 41 minute 40 you know what I think there is a limit hey didi I think there's a limit on how many people can fight the pumpkin King no Diana you did not get it work when you get home we're gonna find out we're gonna run another test and see why you aren't popping in there there's something wrong I don't know why and no I don't have any code in that says if you're my wife you can't fight the pumpkin King I don't have code like that so if you've never fought the pumpkin King before you're gonna have 30 seconds because I changed it to 30 you saw me change it to 30 to choose your attack if you're gonna protect people if you're gonna smite at at you know like there it is like Josip Firebolt lifesteal are dampened so you have three options exclamation point your command and let's see if this group can take out the the pumpkin king Oh Jade JT girl JT girl has joined I have both my wife and my daughter on my stream oh that's hilarious neither then we're able to join the fight nope nope they weren't but I need to find out all that look at that so the pumpkin King is undefeated no one no group of people have defeated it yet you know what that means you know what you know what I'm gonna do the person who defeats the pumpkin King will get a free a free license to in for just six ultimate that's right can organize a team to do this actually I need to think about this I don't think that's fair I don't think that's fair it's a team effort it's a team effort right so what would be fair is if that team that entire team wins the entire team gets a subscription a one-year subscription to em purchase at ultimate you know what I'm gonna do that I just took a screenshot of everyone fighting the pumpkin King right now and if anyone could beat the pumpkin King if just one person stands that the pumpkin King goes down I will give all of you a one-year subscription to air for just six ultimate ah now watch today be the one day you guys be tomorrow its undefeated in like seven fights here we go who's gonna take it say one two three four five six oh there's seven people fighting right now death knight already has a license so that's good actually this group is doing really well this is actually a really a really good group because before in the previous battles the the health bars on the others have been waitin this because the pumpkin King is quite powerful let's see oh oh that's only thirteen though he's weak today he's weak that's why yep that's why somewhat demoralized the pout the pumpkin King so the damage wasn't as bad oh that's a great hit oh my gosh of course of course I have a giveaway of course I had to say something and say I'm gonna give away all these licenses and now you guys are getting our kickin butt let's see oh this is fun though oh this is fun now like it's on me now's like oh crap go pumpkin king so but tell my boss is gonna say hey Brian uh I just noticed she gave away seven licenses today oh did you have an event is that a user group what's going on so ya know they uh this uh they beat the pumpkin King so oh my gosh you guys are doing awesome I'm like sweating now I'm like oh yeah definitely like really I've never beaten them okay what do we got here what do we got what do we got come on pumpkin King don't let me down don't let me down no this is not looking good for me this is not looking good at all normally at this point everyone's almost dead but there's a lot of health left there's a ton of health left okay this okay I need more me I need better music okay you have me waiting in anticipation right now oh come on pumpkin King you got to be more powerful than that we're still strikes of 30-27 that's what optic did oh come on three three cool I'm nervous what we got what do we got going on got a demoralize oh my gosh that's what's going to demoralizing them so is reduced damage by 25% oh that's why oh my gosh you guys have a chance you have a chance Michaels in great shape with health he's got the most health of everybody what do we got we good come on pumpkin cake what are you doing I don't think anyone has died yet that's unheard of thirty-eight not a single team member has been killed yet there we there we go there we go come on pumpkin King come on pumpkin King you got this you got this [Laughter] come on come on come on what do we got what we got we've got oh my god no no no oh yes come on pumpkin King don't you do it one pocket pimp you better you better heal you better heal come on come on no okay bosses turn bosses turn here we go what do we got what do we got 13 oh come on it's nothing yeah dan says it's the layers that you make an offer start Rudy against everyone play okay come on oh no oh my god come on punky key school-to-work two more no no no no no no oh what happened oh my gosh congratulations team congratulations I am a man of my word I have screenshotted all of your usernames so message me on twitch that little send me a message and I will send you a link in a promo code to accept your free one-year subscription to inferences 6 ultimate worth nearly two thousand dollars you get user controls for custom controls for winforms WPF xamarin xamarin forms asp.net we got blazer coming view react angular all kinds of stuff so congratulations team you did it it was close it was so close so close but you pulled it off so message me through twitch and I will I will get you your codes you will get your licenses congratulations team that was a great way to end today's I think now is a good time to raid somebody so let's go find someone to raid shall we who was it was live right now well we got the live coders yeah I mean we could do the live coders right that works let's do that alright everyone so the live coders just so you know we're doing a I'm part of the live coders team full full disclosure there but we're doing at an all-day conference an online event on Twitch under the live coders so it's all kinds of great people sharing all kinds of great techniques on coding or just different topics all together but not all code so right now it looks like someone is talking about debugging Python so awesome so let's go ahead let's get this raid started I want to take this opportunity to thank everyone of you for joining me today congratulations to the winners of the pumpkin King battle once again please do not forget to message me on twitter twitter twitter or twitch doesn't matter just message me I have your screen name and I will get you your license so thank you everyone I appreciate everyone of you for joining me today and I cannot wait to see you next time have a great day let's get to the raid have a good one everyone
Info
Channel: Brian Lagunas
Views: 1,998
Rating: undefined out of 5
Keywords: prism wpf, wpf prism, brian lagunas, pluralsight free, creating a pluralsight course, creating a video course, pluralsight, prism for wpf, prism for wpf tutorial, prism wpf example, prism library, prism library tutorial, prism library examples, prism wpf getting started, prism wpf sample, Updating a Pluralsight Course, dialogservice wpf, prism dialogservice example, prism dialogservice wpf example, IDialogService, IDialogAware, custom dialog window, dialogs
Id: fKtJPDygu1M
Channel Id: undefined
Length: 150min 37sec (9037 seconds)
Published: Sat Apr 18 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.