C#小白项目-WindowsDream

这是一个非常有趣的小项目。如果你是微软(Microsoft)的粉丝,那么这个小项目一定会让你眼前一亮,它模仿了Windows 10的“设置”,虽然不是百分百模仿,但是相似度极高。它没有使用MVVM模式,也没有使用更高技巧的C#语言,它所使用的C#语言代码非常的简单基础。

首先我们打开vs2019,建一个应用“空白应用(通用 Windows)”,项目名称可以根据的喜好进行命名,一切准备就绪后进入开发界面。

C#小白项目-WindowsDream

C#小白项目-WindowsDream

我们双击“MainPage.xaml”进入XAML页面,如果你的应用要适配手机端,那么你可以直接在页面的左上端选择5*Phone 。

C#小白项目-WindowsDream

C#小白项目-WindowsDream

根据Windows 10内置的“设置”来看,“设置”使用了屏幕自适应设计模式,当屏幕尺寸进行大小变化时,应用内部的显示方式也随之发生了变化。

这是我在GitHub上传的项目,它就模仿了Windows 10内置的“设置”界面。下图是它的XAML界面。

在<ScrollViewer>···</ScrollViewer>里面有<StackPanel>···</StackPanel>,在<StackPanel>···</StackPanel>里又有两个小的<StackPanel>···</StackPanel>,他们的名字分别是left和right,left对应的是5*Phone显示界面,right对应的是大尺寸的显示界面。

C#小白项目-WindowsDream

C#小白项目-WindowsDream

下面请看具体的实现代码:

<Grid>
            
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup>
                <VisualState>
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="0"></AdaptiveTrigger>
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="left.Orientation" Value="Vertical"></Setter>
                        <Setter Target="right.Visibility" Value="Collapsed"></Setter>
                    </VisualState.Setters>
                </VisualState>

                <VisualState>
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="600"></AdaptiveTrigger>
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="left.Visibility" Value="Collapsed"></Setter>
                        <Setter Target="right.Orientation" Value="Vertical"></Setter>
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>

        <ScrollViewer VerticalScrollBarVisibility="Auto">
            <StackPanel>
                <StackPanel x:Name="left" >
                
                <TextBlock Text="设置" Margin="10"></TextBlock>

                <!--输入框-->
                <StackPanel>
                    <AutoSuggestBox Width="360" Margin="0 0 0 30" QueryIcon="Find" PlaceholderText="查找设置" ></AutoSuggestBox>
                </StackPanel>

                <ListView Name="listView" Margin="0 10 0 10">
                    <ListView.ItemTemplate>
                        <DataTemplate >
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                                </Grid.ColumnDefinitions>

                                <Image Source="{Binding IconUri}" MaxHeight="80" Stretch="Fill"></Image>

                                <StackPanel  VerticalAlignment="Center" Margin="3 0 0 0" Grid.Column="1">
                                    <TextBlock Text="{Binding Name}"  Margin="0,0,0,2" TextWrapping="WrapWholeWords" TextTrimming="Clip" ></TextBlock>
                                    <TextBlock Text="{Binding Describe}" Style="{ThemeResource CaptionTextBlockStyle}" Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}" TextWrapping="WrapWholeWords" TextTrimming="Clip" ></TextBlock>
                                </StackPanel>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
                </StackPanel>

                
                <StackPanel x:Name="right">
                    <TextBlock Text="设置" Margin="10"></TextBlock>
                    <TextBlock Text="Windows设置" HorizontalAlignment="Center" FontSize="25" Margin="30" ></TextBlock>
                    <!--输入框-->
                    <StackPanel>
                        <AutoSuggestBox Width="450" Margin="0 0 0 30" QueryIcon="Find" PlaceholderText="查找设置" ></AutoSuggestBox>
                    </StackPanel>

                    <GridView Name="gridView" HorizontalAlignment="Center"  SelectionMode="None" IsItemClickEnabled="True">
                        <GridView.ItemTemplate >
                            <DataTemplate >
                                <StackPanel Orientation="Horizontal" Width="350" Height="60">
                                    <Image Source="{Binding IconUri}" Width="50" Height="50"></Image>
                                    <StackPanel Height="55" VerticalAlignment="Center" Margin="5 0 0 0">
                                        <TextBlock Text="{Binding Name}"  Width="176" Margin="0,0,0,2" TextWrapping="WrapWholeWords" TextTrimming="Clip" ></TextBlock>
                                        <TextBlock Text="{Binding Describe}" Width="176" Height="48" Style="{ThemeResource CaptionTextBlockStyle}" Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}" TextWrapping="WrapWholeWords" TextTrimming="Clip" ></TextBlock>
                                    </StackPanel>
                                </StackPanel>
                            </DataTemplate>
                        </GridView.ItemTemplate>
                    </GridView>
                </StackPanel>
            </StackPanel>
        </ScrollViewer>
      
    </Grid>

github地址:

https://github.com/HelloStarsProject/beautiful