[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中是如下写法:

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

 

posted @   DemoApp  阅读(1555)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示