- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试在加载详细信息页面后访问 MasterMenuItem 属性,但我总是收到 MasterMenuItem 为空的错误。我想做的是在 MasterPage 中选择一个项目后,我想获取该项目的 ID 以从数据库加载地址。这是我的代码:
我正在尝试填充我的“详细信息”页面中的 ListView
<ListView x:Name="MainAddressListView"
ItemsSource="{x:Bind MainAddressCollection}"/>
我的详细信息页面的代码
public ObservableCollection<Address> MainAddressCollection { get; private set; } = new ObservableCollection<Address>();
public Client MasterMenuItem
{
get { return GetValue(MasterMenuItemProperty) as Client; }
set { SetValue(MasterMenuItemProperty, value); }
}
public ClientViewDetailControl()
{
this.InitializeComponent();
LoadAddresses();
}
private async void LoadAddresses()
{
MainAddressCollection.Clear();
var data = await AddressDataService.GetAddressesDataAsync();
foreach (var address in data)
{
if (MasterMenuItem.Id == address.ClientId && address.ActiveStatus == 1) //This throws me an error that MasterMenuItem is null
{
if (address.IsPrimary)
MainAddressCollection.Add(address);
else
OtherAddressesCollection.Add(address);
}
}
}
我也曾尝试为此实现 Loaded 事件,但没有成功。奇怪的是其他一切都很好。例如,当我尝试用按钮填充地址时,它起作用了。
我在官方文档中找不到有关它的任何信息。
我的问题是我应该在什么情况下运行代码来填充我的地址列表,或者我应该如何处理这个问题?
编辑
这是 MasterMenuItemProperty 的一个实现:
public static readonly DependencyProperty MasterMenuItemProperty = DependencyProperty.Register("MasterMenuItem", typeof(Client), typeof(ClientViewDetailControl), new PropertyMetadata(null, OnMasterMenuItemPropertyChanged));
private static void OnMasterMenuItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as ClientViewDetailControl;
control.ForegroundElement.ChangeView(0, 0, 1);
}
MasterMenuItem 作为一个整体对象从 MasterView 传递到 Details View ,我可以随心所欲地使用它。我拥有的 XAML 中的绑定(bind)示例(并且可以正常工作):
<TextBlock Text="{x:Bind MasterMenuItem.ShortName, Mode=OneWay}"
郑重声明 - 我正在使用模板 "MasterDetailsView"这是 Windows 社区工具包的一部分。
最佳答案
好的,经过一些时间和不眠之夜,我终于找到了解决方案。整个笑话是关于 MasterMenuItem 属性的定义以及它是如何被填充的(这是一件棘手的事情)。
基本上,程序尝试做的第一件事是填充 MasterMenuItem 属性(在 MasterView 中选择项目后发生),但它最终为 null。之后,它遍历代码和几页,然后再次出现在 MasterMenuItem 属性中 - 现在只有关于所选项目的实际数据。由于在 DetailsView 中调用的所有事件仅在第一次尝试用一些数据填充 MasterMenuItem 后才会触发,因此它从未奏效。
当我发现这只是一个以在它之后加载地址的方式编辑代码的问题。
MasterMenuItem 的原始实现
public Client MasterMenuItem
{
get { return GetValue(MasterMenuItemProperty) as Client; }
set { SetValue(MasterMenuItemProperty, value); }
}
MasterMenuItem 的编辑实现
public Client MasterMenuItem
{
get {
Client Property = GetValue(MasterMenuItemProperty) as Client;
if (Property != null)
LoadAddresses(Property.Id);
return Property as Client;
}
set { SetValue(MasterMenuItemProperty, value); }
}
因为这部分代码被调用了两次(第一次使用 Null 值,第二次使用选定的客户端),我必须实现 if (Property != null) 所以它只会在有实际上是一些数据,但它就像一个魅力。
谢谢大家的帮助!
关于c# - UWP Master/Details 访问 MasterMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52037556/
这是我的代码。 1 Demo 1 2 Demo 2 3 Demo 3 我想做的是——如果任何一个的细节标签已打开,我打开/查看另一个 标签,那么较早的标签应该关闭/
我正在尝试构建一个 iPad Master-Detail 应用程序。主视图只是一个 TableViewController。我想为用户在主视图中点击的每个不同单元格更改完整的详细信息 View 。其中
我目前在我的子主题的 functions.php 文件中有一些代码,它应该在我的 WooCommerce 结帐页面上将“账单详细信息”更改为“运输详细信息”。 但是,当我更新到 WooCommerce
我想刷新 MasterDetail 项目中的详细信息页面。 (在模态 Controller 中进行编辑后应刷新详细信息。)我知道将代码块放在详细信息页面中的何处以强制刷新。我只是不知道要使用什么代码来
我的应用程序中有一个主从模式,但我希望细节能够切换 View 。我想尽可能多地节省空间,以便“内容”既漂亮又宽敞。 如何从一个“细节”导航到另一个“细节”,同时让“向上”按钮返回“主”列表?(参见“细
在过去,我有一个包含这样一个表的数据库: ProductID | ProductName | InStockWareHouse1 | InstockWareHouse2 ---------------
boost::details::pool::pthread_mutex 和 boost::details::pool::null_mutex 有什么区别。 我看到在最新的 boost 版本 - 1.4
我只获取数据源的详细信息,但没有获取 google fit 消耗的卡路里。如何获得燃烧卡路里的详细信息。我可以从( Google Fitness API returns only {} as resu
我刚刚在 Xcode 5 中创建了一个新的“Master-Detail application”项目。 然后在我的主视图 Controller 上,我将 TableView 更改为静态,并添加了一些项
我试图在“me”/me 部分下命名多个路由,以便在此命名空间下拥有所有基于用户配置文件/帐户的内容,以实现更干净的路由。 解决这个问题的最佳方法是什么?我发现重写默认的 REST 路由(profile
所以我是 Android 开发的新手,并试图了解主/细节流程设计。因此,我使用 Eclipse 为您创建的默认类 - 因此 ScreenDetailActivity、ScreenDetailFragm
我使用 var contacts:[details] 编写代码? = nil 我遇到了无法访问 contacts?.count 的问题,我不得不在任何地方使用可选值。例如 contacts[index
我已经成功地将 www.my-website/blog.php 重写为 www.my-website/blog 现在,我想对我的 blog-detail.php 页面做进一步的事情 从 www.my-
在问这个问题之前,我想说 this stackoverflow 中的问题与我的问题非常相似,但概念仍然不清楚,非常困惑。 我想了解依赖倒置原则,但我无法完全理解它? 下面是DIP说的两点 A. Hig
我是 SYCL/OpenCL/GPGPU 的新手。我正在尝试构建和运行常量加法程序的示例代码, #include #include #include #include namespace sy
我正在使用这个 Ray Wenderlich tutorial作为我正在从事的项目的指南。但是,我正在尝试扩展此模板以合并子目录、子子目录、子子子目录等。 例如,如果您单击主/主目录屏幕中的“Cand
我正在尝试创建一个小扩展,以便我可以从详细 View Controller 访问主视图 Controller 以更新变量。 import UIKit extension UISplitViewCont
我正在尝试基于由 MySQL 数据库支持的 Entity Framework 6 DbContext 实现基本的主从 View 。表格配置尽可能简单: 我的测试应用程序的表单包含两个 ComboBox
我知道这是一个老问题并且已经answered在 objective-c 中。但我正在寻找 Swift 中的解决方案。我在 AppDelegate 中的 splitviewController 代码如下
我的句子很少。在第一句话的结尾(在这一行),我想添加剧透,这将保留故事的其他部分。我正在尝试这样做,但是当单击更多时.. - 我的文本跳到下一行。我需要在一行中继续文本更多...请不要告诉我任何脚本,
我是一名优秀的程序员,十分优秀!