WPF中的设计模式

Jus*_*tin 3 .net c# wpf mvvm

我正在制作我的第一个WPF应用程序,所以这个问题可能看起来很奇怪.我一直在阅读关于MVVM的内容,到目前为止它对我来说很有意义.但是,我不明白的是将所有XAML分开.

我的意思是:我假设您没有将所有内容放在MainWindow.xaml中,只是根据将要使用的内容折叠控件.我想你会想要一个包含xaml其他文件的容器.它是否正确?

你如何将XAML分离出来,这样它不仅仅是一个文件中所有东西的混搭?

Kev*_*mey 6

你如何将XAML分离出来,这样它不仅仅是一个文件中所有东西的混搭?

有很多种方法,包括创建一个单独的UserControl,CustomControl,Page或者Window

例如,如果你想拉一些XAML出你的MainWindow.xaml,你可以创建一个UserControl(右击项目,添加,新项...,用户控件(WPF) )被称为MyUserControl.xaml是这样的:

<UserControl x:Class="WpfApplication1.MyUserControl"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Grid>
        <TextBlock>This is from a different XAML file.</TextBlock>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

然后在MainWindow.xaml这样使用此控件:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:myControls="clr-namespace:WpfApplication1">
    <Grid>
        <myControls:MyUserControl/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

请注意,您需要添加对您的命名空间的引用 UserControl

xmlns:myControls="clr-namespace:WpfApplication1"
Run Code Online (Sandbox Code Playgroud)

  • @Justin首选模式是使用DataTemplates,看看我的回答. (2认同)