zoukankan      html  css  js  c++  java
  • [UWP]xaml中自定义附加属性使用方法的注意项

    ---恢复内容开始---

    随笔小记,欢迎指正

    在UWP平台上做WVVM的时候,想针对ListBox的SelectionChanged事件定义一个自定义的命令,于是使用自定义附加属性的方式。可是最后自定义附加属性SelectionChangedCommand写好了,却不知道怎么在XAML中使用。

    我的自定义属性如下:

    namespace SelectionChangedCommand.Services
    {
        public static class SelectionChangedBehavior
        {
            public static readonly DependencyProperty SelectionChangedCommandProperty = DependencyProperty.Register("SelectionChangedCommand", typeof(ICommand), typeof(SelectionChangedBehavior), new PropertyMetadata(null, SelectionChangedPropertyCallBack));
    
            public static void SetSelectionChangedCommand(UIElement element, ICommand value)
            {
                element.SetValue(SelectionChangedCommandProperty, value);
            }
            public static ICommand GetSelectionChangedCommand(UIElement element)
            {
                return (ICommand)element.GetValue(SelectionChangedCommandProperty);
            }
    
    
            public static void SelectionChangedPropertyCallBack(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                ListBox listBox = (ListBox)d;
                listBox.SelectionChanged += ListBox_SelectionChanged;
            }
    
            private static void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                ListBox listBox = (ListBox)sender;
                GetSelectionChangedCommand(listBox).Execute(listBox.SelectedItem);
            }
        }
    }

    于是百度了一番,看到在Wpf中是如下写法:

    xmlns:aqua="clr-namespace:AquariumObjects;assembly=AquariumLibrary"
    

     于是我便模仿着写了如下代码

    xmlns:my="clr-namespace:SelectionChangedCommand.Services;assembly=SelectionChangedCommand"

    其中“SelectionChangedCommand”是我的程序集名称。

    然后再一个ListBox中做了如下引用

    <ListBox my:SelectionChangedBehavior.SelectionChangedCommand="{Binding SelectionChangedCommand}" ></ListBox>

    结果提示我存在未知的可附加成员“SelectionChangedBehavior.SelectionChangedCommand",所以我就把上面的命名空间改成了

    xmlns:my="using:SelectionChangedCommand.Services"

    结果就可以了。

    那么clr-namespace和using之间到底有什么区别呢?

    目前在网上查到:silvelight中是:clr-namespace.  windows8中改成了using.

  • 相关阅读:
    [BZOJ2555]SubString
    [十二省联考2019]字符串问题
    CF149E Martian String
    挣钱攻略——浅谈移动开发者如何盈利
    教你如何在iPhone AppStore赚钱
    java8IO工具类(java疯狂讲义3复习笔记)
    asp.net数据库连接,三层架构方法调用 (转)
    prototype.js 源码解读
    使用ASP.NET AJAX让GridView的数据行显示提示框(ToolTip)(转)
    Ajax加载信息提示实例(转)
  • 原文地址:https://www.cnblogs.com/cjw1115/p/5052836.html
Copyright © 2011-2022 走看看