【问题标题】:Evaluate ContentControl without rendering to screen评估 ContentControl 而不渲染到屏幕
【发布时间】:2010-04-05 21:20:11
【问题描述】:

我有一个数据网格,我正在编写一种方法来搜索它以查找一些文本。实际上,我的所有列都使用 DataTemplateSelector,因此在我的搜索中,我需要能够获取一个 DataTemplate,将其应用于 ContentControl,然后找到一个 TextBlock 来获取文本以查看它是否符合我的搜索条件。我正在尝试以下方法,但似乎没有产生任何结果。我也尝试了 FindName("layoutRoot" control) 但它也返回为空。

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

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

【问题讨论】:

    标签: c# wpf binding


    【解决方案1】:

    您是否尝试过 VisualTreeHelper 的 GetChild()/GetChildrenCount() 来枚举所有孩子?

    此外,我相信您可以从 XAML 在 DataTemplate 中的目标控件上设置 Initialized 处理程序,并从那里订阅 Loaded 事件(如果需要)。

    【讨论】:

      【解决方案2】:

      我认为您解决这个问题的方式不正确。您应该从希望在您的视图模型中的列表中获取搜索项。并且您的网格的 selecteditem 应该绑定到一个属性,您可以将其设置为您在搜索中找到的项目。如果您希望我通过一些代码示例为您进一步充实这一点,请告诉我。

      【讨论】:

      • 我正在研究一个带有网格的通用框架,以允许对任何项目进行网格内搜索。由于虚拟机项目上存在的内容可能会因应用的转换器和其他因素而有所不同,因此通过虚拟机进行搜索不会有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      相关资源
      最近更新 更多