2010-04-05 115 views
0

我有一个数据网格,我正在编写一个方法来搜索它以查找一些文本。实际上,我的所有列都使用DataTemplateSelector,因此在我的搜索中,我需要能够采用DataTemplate,将其应用于ContentControl,然后找到TextBlock以获取文本以查看它是否与我的搜索条件匹配。我正在尝试以下内容,但似乎无法产生任何结果。我也尝试过一个FindName(“layoutRoot”控件),但是它也返回为null。评估ContentControl而不渲染到屏幕

var control = new ContentControl(); 
control.ContentTemplate = dataTemplate; 
control.Content = item; 

var txtBox = control.FindChildren<TextBlock>(); 

回答

0

你试过VisualTreeHelper的GetChild()/ GetChildrenCount()来枚举所有的孩子吗?我相信你可以在DataTemplate中的目标控件上设置XAML的初始化处理程序,并从那里订阅Loaded事件(如果需要)。

0

我不认为你会以正确的方式解决这个问题。你应该从希望在你的视图模型中的列表中获得你的搜索项目。并且您的网格的selecteditem应绑定到您可以设置为您在搜索中找到的项目的属性。让我知道你是否希望我通过一些代码示例为你更加丰富多彩。

+0

我正在使用网格的通用框架,以允许任何项目的网格内搜索。由于虚拟机项目上存在的内容可能与应用的转换器和其他因素有所不同,因此通过虚拟机搜索并不会有所帮助。 – dariusriggins 2012-06-22 16:42:43