如何在xaml中引用UIControl内的对象

时间:2014-08-09 17:16:45

标签: c# xaml binding

首先我创建了一个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

1 个答案:

答案 0 :(得分:0)

确定。我发现了一些东西。我需要使用FindResource来访问xmal内的对象。