gpt4 book ai didi

c# - 如何在 UWP 中为集合类型定义 `DependencyProperty`?

转载 作者:行者123 更新时间:2023-11-30 14:47:22 25 4
gpt4 key购买 nike

我正在尝试创建一个 DependencyObject这是从 Xaml 创建的。它有一个 DependencyProperty类型 List<object>像这样定义:

    public List<object> Map
{
get { return (List<object>)GetValue(MapProperty); }
set { SetValue(MapProperty, value); }
}

// Using a DependencyProperty as the backing store for Map. This enables animation, styling, binding, etc...
public static readonly DependencyProperty MapProperty =
DependencyProperty.Register("Map", typeof(List<object>), typeof(MyConverter), new PropertyMetadata(null));

Xaml:

        <MyConverter x:Key="myConverter">
<MyConverter.Map>
<TextPair First="App.Blank" Second ="App.BlankViewModel"/>
</MyConverter.Map>
</MyConverter>

我一直收到 Cannot add instance of type 'UwpApp.Xaml.TextPair' to a collection of type 'System.Collections.Generic.List<Object> .什么会导致此错误?谢谢。

最佳答案

您定义了 DependencyProperty 的类型与 typeof(List<object>) .这意味着该属性恰好需要这种类型。自 List<object>不是一个TextPair我们需要更通用。不要使用特殊的通用列表类型,只需使用 IList作为类型并添加 new List<object>()作为默认值。这应该可以解决您的问题。

public IList Map
{
get { return (IList)GetValue(MapProperty); }
set { SetValue(MapProperty, value); }
}

public static readonly DependencyProperty MapProperty =
DependencyProperty.Register("Map", typeof(IList),
typeof(MyConverter), new PropertyMetadata(new List<object>()));

编辑:看起来 UWP 的行为与 WPF 有点不同。要在 UWP 中运行此代码,您需要使用通用 IList<object>而不是 IList作为属性类型。

关于c# - 如何在 UWP 中为集合类型定义 `DependencyProperty`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45335237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com