gpt4 book ai didi

c# - 如何编写自定义依赖属性和数据绑定(bind)到自定义类型?

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

我在 winrt 环境中有一个项目,我试图通过扩展它来扩展标准 GridView 控件的功能。目标是更改 GridView 的 SelectedItems 行为。

public class myGridView : GridView
{

/// <summary>
/// My replacement of SelectedItems
/// </summary>
public IObservableVector<object> appItems
{
get { return GetValue(AppSelectedItemsProperty) as IObservableVector<object>; }
set { SetValue(AppSelectedItemsProperty, value);
appItems.VectorChanged += AppSelectedItemsChanged;
}
}

/// <summary>
/// Identifies the AppSelectedItems dependency property.
/// </summary>
public static readonly DependencyProperty AppSelectedItemsProperty =
DependencyProperty.Register(
"appItems",
typeof(IObservableVector<object>),
typeof(AppGridView),
new PropertyMetadata(null, AppItemsPropertyCallback));

….
….
...
}

在我的 XAML 文件中,我有以下内容..

<xx
…….
<appControls:AppGridView appItems="{Binding ContactsListSelectedItems, Mode=TwoWay } }">
.…

</appControls:AppGridView >
…..
…….

/xx>

最后一段代码是绑定(bind)到 Datacontext 的 MVVM 类。

 public  class myModel: baseModel
{
……
……..
/// <summary>
/// Not Working
/// </summary>
private IObservableVector<Contact> _ContactsListSelectedItems;
public IObservableVector<Contact> ContactsListSelectedItems
{
get
{
return (IObservableVector<Contact>)_ContactsListSelectedItems;
}
set
{
SetProperty<IObservableVector<Contact>>(ref _ContactsListSelectedItems, value);
}
}

….
….
}

我在这里找到了 IObservableVector 的实现:https://gist.github.com/runceel/2437074

绑定(bind)到 ContactsListSelectedItems 的数据不起作用,出现以下错误:

Error: Cannot get 'ContactsListSelectedItems' value (type 'Object') from type 'Consius.ActiveWork.Pages.ContactPage.ContactPageViewModel, Consius.ActiveWork, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. BindingExpression: Path='ContactsListSelectedItems' DataItem='Consius.ActiveWork.Pages.ContactPage.ContactPageViewModel, Consius.ActiveWork, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; target element is 'Consius.ActiveWork.Controls.AppGridView' (Name='ContactsList'); target property is 'appItems' (type 'IObservableVector`1<Object>').

如果我将 ContactsListSelectedItems 的类型更改为:

IObservableVector<object>

一切正常。

这对我来说不是一个可接受的解决方案,使用类对象编写我的 MVVM 类。

有没有人可以提示我哪里出了问题?

最佳答案

您是否尝试过使用 ObservableCollection 而不是 IObservableVector 以及您找到的自定义实现?

关于c# - 如何编写自定义依赖属性和数据绑定(bind)到自定义类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17987091/

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