C#第七节课
//正文之前先吐槽(助教跳过这段啊我前面都注释了)。。。这学期的12周之后算了算好像还蛮闲的。。。12周之前。。。尤其是现在到12周。。。一顿大作业一顿大作业。。。还有新开的课还有期末。。还有acm集训。。。学弟学妹要是看到博客记得。。。C#与Android不可兼得。。。少选课保平安。。。何苦为难自己。。。好了吐槽结束
上周讲了很多。。。感觉进度又加快了一些。。。我就说说课后自己又重现的老师提起过的知识吧。正好这个五一除了acm集训就在写C#的大作业,所以这节课就着重说一些实验中的问题以及实验和老师课堂重合的东西吧。。。
实验中接触到的比较多的也是大家几乎都绕不开的。。。xaml。
这个我得理解就是布局文件,类似安卓中的xml。。。感觉已经接触过很多标记语言了,这个也不例外<xxx></xxx>这种姿势的是最常见的。。。
然后在声明中<xxx "这里可以添加一些定义"></xxx>两个尖括号里面则是在这个布局内部的一些东西。。。这么一说还是蛮明白的对吧。
上点图/代码
最基础的。。。一个button
代码是这样的
<Button Content="Button" HorizontalAlignment="Left" Margin="621,167,0,0" VerticalAlignment="Top"/>
然后我们可以在xaml里面对应的.cs里面定义关于button的事件
说道这里不得不说visual studio确实是个很6的东西比如控件这个东西基本不用自己敲了,大部分情况你需要的控件(轻量级开发中)都已经有封装好的模板了,只需要从旁边拖出来就可以
对于扇面那个button,我们要写click事件的话
private void Button_Click(object sender, RoutedEventArgs e) { }
这里面就可以写我们的click函数了
说起来,还有各种别的事件,可以在这里找到
在这里定义函数然后去.cs里面写一下函数的具体内容即可。。。
讲到这里在说一下跳转,应用不可能只有一个界面(也有可能诶)
所以我们要在不同界面之间跳转的时候。。。在C#中用到的是导航
我们可以用
this.Frame.navigate(typeof(你要跳转的界面));
来进行跳转,但是注意。。。似乎如果我们从a跳转到b,再从b跳转到a的时候,似乎并不能完成。。。具体原因不明,好像是跟导航的设计有关系,那是一个记录前驱的东西,我们并不能跳成一个环,我的想法中是不是能有一个往回跳的函数沿着我们的frame跳回去。。。不过我没仔细找而是用了另一种方式解决了这个问题
往回跳的时候用这个函数
var frame = new Frame(); frame.Navigate(typeof(你想要跳转的)); Window.Current.Content = frame; Window.Current.Activate();
也还是蛮有趣的。。。。这个相当于我们又重新搞了一个新的frame
然后在说一下,之前虽然学过LINQ但是感觉并不是很会用,至少开发应用没什么信心。。。于是又简单学了一下json
恰好C#又有这种模板。。。还是蛮好用的
json和xml经常一起提起。。。对比一下这两种
◆可读性
JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解。
◆文件大小与传输
XML允许使用方便的标签,所以文件尺寸是要比JSON大的。而且JSON源于Javascript,所以天生的主战场是Javascript与网络,在这里,JSON有着XML无法赶超的优势。
对于轻量级的开发我觉得json还是更好一些。。。
json的解析也是C#自带的,你只要建立一个
JsonReader
就可以读入json了
写json的时候似乎也并不需要思考json是怎么把我的那个奇葩的类定义出来的。。。只要。。。
JsonReader
就可以了
随手截图了一个我的实验中的一个json截图。。。。。。Json长这样
可以清晰的看到 key:value这样的组合,还是非常易读的。。虽然说不如xml。。但是也足够了~
根据这次实验,还发现了一些很方便的东西就是metro风格的开发。。也就是win8商店应用的那种,win8系统的桌面(windows键那个)就是那种风格的,然后可以滚动,很适合平板的感觉。。之前我想怎么实现这个,难道是自己放组件。。。实际上是一个grid控件实现,
而且因为这种风格很成型,所以基本不需要自己去弄,只要应用自带的模板即可
<GridView.ItemTemplate> <DataTemplate> <Grid HorizontalAlignment="Left" Width="250" Height="250"> <Border Background="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"> <Image Source="{Binding ImagePath}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> </Border> <StackPanel VerticalAlignment="Bottom" Background="{ThemeResource ListViewItemOverlayBackgroundThemeBrush}"> <TextBlock Text="{Binding Title}" Foreground="{ThemeResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextBlockStyle}" Height="60" Margin="15,0,15,0"/> <TextBlock Text="{Binding Subtitle}" Foreground="{ThemeResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextBlockStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/> </StackPanel> </Grid> </DataTemplate> </GridView.ItemTemplate>
会生成一个这样的gridView。。。我们 只需要把该binding的绑上自己的datasource即可简单易用而且效果爆表
这周的记录先告一段落!五一假期过去了继续写作业了辣