码迷,mamicode.com
首页 > 其他好文 > 详细

[UWP]xaml中自定义附加属性使用方法的注意项

时间:2015-12-17 01:49:07      阅读:944      评论:0      收藏:0      [点我收藏+]

标签:

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

随笔小记,欢迎指正

在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.

 

[UWP]xaml中自定义附加属性使用方法的注意项

标签:

原文地址:http://www.cnblogs.com/cjw1115/p/5052836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!