首先我创建了一个uicontrol A,在 MainWindow.xaml.cs 中,我可以单击一个按钮来创建一个新的A,然后我使用A.DataContext = new Book(... )。此外,在Uicontrol中,我可以单击一个按钮来调用以下方法
private void OnShowBook(object sender, RoutedEventArgs e)
{
Book theBook = this.DataContext as Book;
if (theBook != null)
MessageBox.Show(theBook.Title, theBook.Isbn);
}
这是有效的,因为我之前使用A.DataContent = ...创建了一本新书。
现在我改变了一点。我没有使用A.DataContent = new Book(...)创建实例。相反,我创建了另一个BookFactory.cs
来保存数据,并在我使用的Uicontrol中
<ObjectDataProvider x:Key="theBook" ObjectType="local:BookFactory" MethodName="GetTheBook" />
<Grid x:Name="grid1" DataContext="{StaticResource theBook}">
使用它。除了按钮 - &gt; OnshowBook 之外,每件事都有效。我的问题是在这种情况下如何访问Uicontrol XAML文件中的Book对象?
更新新问题
我试图使用
private void OnShowBook(object sender, RoutedEventArgs e)
{
Book thebook = ((this.FindResource("theBook") as ObjectDataProvider).Data as Book);
if (thebook != null)
MessageBox.Show(thebook.Title, thebook.Isbn);
}
代码编译正常但在运行时抛出错误。它找不到我确实宣称的关键 theBook 。
答案 0 :(得分:0)
确定。我发现了一些东西。我需要使用FindResource
来访问xmal内的对象。