zoukankan      html  css  js  c++  java
  • Xaml基础知识

    xmlns是XML Namespaces的缩写,中文名称是XML命名空间。
    指定命名空间xmlns:mycontrol="clr-namespace:SDKSample;assembly=SDKSampleLibrary",就可以使用该命名空间下的类了,通常使用在某个命名空间下的控件的时候就要引入命名空间,这点跟代码的实现是一样的。namespace就不说了,assembly是程序集引用,所以当前项目中的命名空间,可以不指定assembly。
    xaml中事件的绑定,button有个比较常用的绑定事件,command,但是那些不常用的事件怎么绑定viewmodel中的方法呢?
    wpf中提供了,System.Windows.Interactivity这个命名空间来解决这个问题,从使用的方式上看,跟样式中的触发器使用方法是一样的。
    样式中触发器的使用(鼠标滑过按钮变色):
            <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <ControlTemplate.Triggers>

                      <Trigger Property="IsMouseOver" Value="true">
                      <Setter Property="Background" Value="Black"/>
                      </Trigger>

                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

    非command事件绑定:

    首先引入System.Windows.Interactivity命名空间,xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 

           <TextBox  Text="" Width="150" Height="26"  >
               <i:Interaction.Triggers>
                  <i:EventTrigger EventName="TextChanged">
                     <i:InvokeCommandAction Command="{Binding TxtChangeCommand}"/>
                  </i:EventTrigger>
               </i:Interaction.Triggers>
           </TextBox>

    如果使用现有的MVVM框架绑定事件的话,可以直接引用自己框架中的command,我就用过MVVMLight,就以这个为例:

    引入命名空间:xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4" 

    <i:InvokeCommandAction Command="{Binding TxtChangeCommand}"/>改成
    <cmd:EventToCommand Command="{BindingTxtChangeCommand}" PassEventArgsToCommand="True" />

    最大的好处就是可以传递参数了。
  • 相关阅读:
    6.11 修饰符的适用范围
    5.10 对象与垃圾回收
    5.9 枚举类
    5.8 java 11增强的Lambda表达式
    5.7 内部类
    5.6 接口
    5.5 抽象类
    5.4 final修饰符
    5.3 类成员
    5.2 Object类中两个需要被重写的方法
  • 原文地址:https://www.cnblogs.com/jinshizuofei/p/3422420.html
Copyright © 2011-2022 走看看