WPF学习篇 之 .xmal页面 属性介绍

原创 2007年09月21日 21:12:00

以下是 个人参考程序,学习总结的,如果有 甚么不对,请指教,谢谢。

<Page x:Class="BocoOssViewDemo.Demos.Topo.Xaml.StarMoon" <!--后置代码类的名-->
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<!--这两行默认的,不用管-->
     xmlns:ovt="clr-namespace:BOCO.OssView.Topo;assembly=BOCO.OssView.Topo"<!--为命名空间指定一个别名,如果是本程序集下,不用加后面的assembly-->
     xmlns:local="clr-namespace:BocoOssViewDemo.Demos.Topo.Xaml"<!--本文件的存储位置-->
    Title="星月童话"
    >
  <Page.Resources><!--为本文件(程序)设置资源,contextmenu写在这,可以让整个页面都共享一个contextmenu,及为一个静态的了-->
    <ContextMenu x:Key="nodeContextMenu" StaysOpen="True"><!--x:Key相当于id或者name属性,但是此处需要写成x:Key-->
      <MenuItem Header="{Binding Path=Host}"/><!--为menuItem 绑定数据,如果没有指定Source属性,则数据从控件的DataContext 中查找。path对应表中的列或者是类的属性,如果source和path都不指定,只有binding,及为整个对象,从datacontext中获取。-->
      <Separator/>
      <MenuItem Header="可拖动" IsCheckable="True" IsChecked="{Binding Path=CanDrag}"/>
      <MenuItem Header="选中" IsCheckable="True" IsChecked="{Binding Path=IsSelected}"/>
      <MenuItem Header="显示" IsCheckable="True" IsChecked="{Binding Path=IsVisible}"/>
    </ContextMenu>
 <!--动态设置样式,对于静态的样式,如这个程序的button 等控件的样式,可以参考c:/Program Files/Microsoft SDKs/Windows/v6.0/Samples/WPFSamples/Controls/ControlTemplateExamples/CSharp/Resources文件-->
  <Style TargetType="{x:Type ovt:NodeUI}"><!--为Namespace的别名为ovt的类中的NodeUI设置样式-->
      <Setter Property="ContextMenu" Value="{StaticResource nodeContextMenu}"/><!--为NodeUI设置contextmenu,指定为上面定义的contextmenu,由于该contextmenu是在本文件(程序)的资源里面设置,因此,Value属性中用StaticResource,当然,也还有“动态资源”value的用法: 资源类型+资源名称-->
      <Setter Property="Control.Template"><!--为NodeUI控件设置样式-->
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type ovt:NodeUI}">
            <ContentPresenter Content="{Binding}"      
              ContentTemplateSelector="{x:Static local:NodeTemplateSelector.Instance}"/><!--NodeTemplateSelector.Instance为本程序中的一个静态类的方法-->
          </ControlTemplate>
        </Setter.Value>
      </Setter>

      <Style.Triggers><!--设置事件处理方法或者叫触发器-->
        <Trigger Property="IsMouseOver" Value="True">
          <Setter Property="BitmapEffect"><!--BitmapEffect为一个类,OuterGlowBitmapEffect从它派生-->
            <Setter.Value>
              <OuterGlowBitmapEffect GlowColor="{Binding Path=Severity,Mode=OneWay,Converter={x:Static ovt:SeverityColorConverter.Default}}"<!--Mode枚举类型   BindingMode枚举,值有 TwoWay,OneWay,OneTime,OneWayToSource,  Default 其作用介绍(个人理解):OneWay,程序或者界面属性值的改变不会互相影响--><!--Converter介绍:x:Static 指定是静态类,后面是命名空间下的静态方法-->
                                     GlowSize="5" Noise="0.1" Opacity="0.8"/><!--设置一种加深的效果,如线条加粗,颜色变亮等。-->
            </Setter.Value>
          </Setter>
        </Trigger>
        <DataTrigger Binding="{Binding Path=IsSelected}" Value="True"><!--数据改变的触发-->
          <Setter Property="BitmapEffect">
            <Setter.Value>
              <OuterGlowBitmapEffect GlowColor="{Binding Path=Severity,Mode=OneWay,Converter={x:Static ovt:SeverityColorConverter.Default}}"
                                     GlowSize="5" Noise="0.1" Opacity="0.8"/>
            </Setter.Value>
          </Setter>
        </DataTrigger>
      </Style.Triggers>
    </Style>
    <ovt:LinePathCreator x:Key="linePathCreator"/><!--把对象加载到本页面,并指定名字-->
    <ovt:PolylinePathCreator x:Key="polylinePathCreator"/>
    <ovt:ArcPathCreator x:Key="arcPathCreator"/>
    <ContextMenu x:Key="linkContextMenu" StaysOpen="True" Opened="linkContextMenu_Opened">
      <MenuItem Header="请选择Link的布线方式:" />
      <Separator/>
      <RadioButton Name="miLine" Content="直线" IsChecked="True"
                   Tag="{StaticResource linePathCreator}" Checked="radioButton_Checked"/>
<!-- Tag="{StaticResource linePathCreator}" StaticResource 及为本页面资源,linePathCreator及为前面所加载的对象-->
      <RadioButton Name="miPolyline" Content="折线" IsChecked="False"
                   Tag="{StaticResource polylinePathCreator}" Checked="radioButton_Checked"/>
      <RadioButton Name="miArc" Content="曲线" IsChecked="False"
                   Tag="{StaticResource arcPathCreator}" Checked="radioButton_Checked"/>
    </ContextMenu>
    <Style TargetType="{x:Type ovt:LinkUI}">
      <Setter Property="ContextMenu" Value="{StaticResource linkContextMenu}"/><!--为LinkUI控件指定本页面定义的ContextMenu-->
      <Setter Property="PathCreator" Value="{StaticResource linePathCreator}"/>
    </Style>
  </Page.Resources>
  <Grid Background="White" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
    <Grid.RowDefinitions>
      <RowDefinition  Height="28"></RowDefinition>
      <RowDefinition  Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <ToolBarTray  AllowDrop="True" Grid.Row="0" Grid.Column="0" >
      <ToolBar>
        <Button Width="20" Height="20" Background="Transparent">
          <Image Source="../../../Images/toolbar/select.png" />
        </Button>
        <Button Width="20" Height="20" Background="Transparent">
          <Image Source="../../../Images/toolbar/zoomIn.png" />
        </Button>
        <Button Width="20" Height="20" Background="Transparent">
          <Image Source="../../../Images/toolbar/zoomOut.png" />
        </Button>

      </ToolBar>
    </ToolBarTray>
    <ovt:NetworkPanel Name="myNetwork" Grid.Row="1" Grid.Column="0" />
   
  </Grid>
</Page>

 

WPF中XMAL对象属性赋值及属性类型转换机制

XAML中为对象属性赋值共有三种语法:           1)使用字符串直接赋值;                  x:Name="rect" Width="100" Height="200" F...

WPF学习第二集-XMAL概览

微软为了把开发模式从网络开发移植到桌面开发和富媒体网络程序的开发上,微软创造了一种新的开发语言------XMAL(读作ZAML),XAML全称Extensible Application MarkU...

WPF之从0开始学习XMAL

剖析最简单的XMAL代码:

WPF学习第三集-从0开始学习XMAL

剖析最简单的XMAL代码: [html] view plaincopyprint? Window x:Class="WpfApplication2....

WPF之XMAL对象引用总结

我们应该都知道,XMAL是一种声明式语言,XMAL的标签声明的就是对象。一个XMAL标签会对应着一个对象,这个对象一般会是一个控件类的实例。在.Net平台上,所有类都是引用类型,我们是通过引用来访问对...

XMAL的学习

  • 2012年04月26日 09:14
  • 14.25MB
  • 下载

WPF学习之页面跳转

  • 2013年12月05日 20:10
  • 459KB
  • 下载

WPF学习笔记——理解依赖属性

在使用WPF的时候,总会有一个疑问,依赖属性跟普通的类属性有什么区别,微软要在WPF引入它想要解决什么问题?如果不解除这个疑惑,在编程的时候心里总会不踏实。因此我在网上找了一些资料,终于弄懂了它的由来...

WPF学习——依赖项属性(2)

本系列文章是从“@东邪独孤”博客中转过来的,本想着直接拿链接过来,但是如果他删了博客就没有了,文章写得很棒,一下就理解了依赖项属性。 原文地址:http://blog.csdn.net/tcjiaa...

WPF学习之深入浅出话属性

通过前面的学习,我们已经知道Data Binding是WPF“数据驱动UI”理念的基础。上一章我们将主要的精力放在了Binding的数据源这一端,研究了Binding的Source和Path。本章我们...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF学习篇 之 .xmal页面 属性介绍
举报原因:
原因补充:

(最多只允许输入30个字)