• 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" />

    最大的好处就是可以传递参数了。
  • 相关阅读:
    Mutex和Lock
    Thread和Promise以及packaged_task
    async和Future
    《并行程序设计导论》——读书笔记汇总
    UnrealEngine4蓝图可视化编程 完整例子 勘误
    BOOST下载
    sql 解析xml
    AutoResetEvent 笔记2
    ssh免密登录设置 (普通用户和root用户)
    npm设置淘宝镜像
  • 原文地址:https://www.cnblogs.com/jinshizuofei/p/3422420.html
Copyright © 2020-2023  润新知