gpt4 book ai didi

silverlight-4.0 - 背后的代码有效,但 MVVM 无效

转载 作者:行者123 更新时间:2023-12-03 10:40:16 25 4
gpt4 key购买 nike

我一直在弄乱后面代码中有效的东西,但是当我尝试绑定(bind)到 MVVM 时,什么都没有显示。首先我将展示后面的代码,然后是 MVVM(相同的 xaml)。我想使用 MVVM 而不是后面的代码。

代码背后(作品):

var loadOp = ctx.Load<GateBlox.Web.Models.Structure>(ctx.GetStructuresQuery());
loadOp.Completed += (s, e) => { _treeView.ItemsSource = loadOp.Entities.Where(struc => !struc.StructureParentFK.HasValue); };

XAML
<Grid x:Name="LayoutRoot">
<sdk:TreeView x:Name='_treeView' DataContext='{StaticResource ViewModel}'>
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource='{Binding Children}'>
<TextBlock Text='{Binding StructureName}' />
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:TreeView>
</Grid>

MVVM(不绑定(bind))
private LoadOperation<Structure> _loadStructures;
private StructureContext _structureContext;

private IEnumerable<Structure> _structures;
public IEnumerable<Structure> Structures
{
get { return this._structures; }
set { this._structures = value; RaisePropertyChanged("Structures"); }
}

public StructuresViewModel()
{
if (!DesignerProperties.IsInDesignTool)
{
_structureContext = new StructureContext();

_loadStructures = _structureContext.Load(_structureContext.GetStructuresQuery().Where (p=> ! p.StructureParentFK.HasValue));
_loadStructures.Completed += new EventHandler(_loadStructures_Completed);
}
}

void _loadStructures_Completed(object sender, EventArgs e)
{
this.Structures = _loadStructures.Entities;
}

最佳答案

您是否检查过输出中没有出现绑定(bind)表达式错误?您将数据模板的项目源绑定(bind)到名为 Children 的属性,但您的 View 模型公开了一个名为 的数据源结构 .

此外,在您的工作示例中,您正在设置 TreeView 的 ItemsSource,但在 MVVM XAML 中,您正在设置数据模板的 ItemsSource。您需要设置/绑定(bind)到的 ItemsSource 之间是否存在不一致?

您也可以考虑使用实现 INotifyCollectionChanged 的集合数据源。接口(interface)(ObservableCollection 或将绑定(bind)源公开为使用 ICollectionViewPagedCollectionView)。

我建议您查看有关 data binding in MVVM 的信息。 ,因为它为在 View 模型中设置数据源提供了极好的指导。

关于silverlight-4.0 - 背后的代码有效,但 MVVM 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256035/

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