Csharp/C#教程:WPF如何从DataTemplate访问控件分享


WPF如何从DataTemplate访问控件

我有一个datatemplate包含一个网格,在网格内我有一个combobox。

           

然后我有一个网格,通过样式引用该模板。

    

如何通过代码访问myCombo来基本设置其DataContext?

首先,我甚至找不到Resource(ShowAsExpanded)与ContentPresenter内部用法之间的关系。 但就目前而言,我们假设Dy​​namicResource应该指向ShowAsExpanded。

您不能也不应该通过代码访问combobox。 您应该将datacontext绑定到使用该样式的网格。 如果您不想这样做,则必须在运行时查找内容并搜索子combobox。

我知道的三种方式。

1.使用FindName

 ComboBox myCombo = _contentPresenter.ContentTemplate.FindName("myCombo", _contentPresenter) as ComboBox; 

2.将Loaded事件添加到ComboBox并从那里访问它

  

3.在Visual Tree中找到它

 private void SomeMethod() { ComboBox myCombo = GetVisualChild(_contentPresenter); } private T GetVisualChild(DependencyObject parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child == null) { child = GetVisualChild(v); } if (child != null) { break; } } return child; } 

你需要使用FindName。 查看https://msdn.microsoft.com/en-us/library/system.windows.frameworktemplate.findname.aspx

上述就是C#学习教程:WPF如何从DataTemplate访问控件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1002999.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐