繁体   English   中英

如何访问ItemTemplate中的控件

[英]How to access controls inside an ItemTemplate

使用Windows Phone 8,C#。

我所做的基本上是编辑枢纽项目。 我将其命名为MainPivot并在其中编辑了Pivot Item Title并在其中添加了一个名为PivotTitletxtTextBlock XAML为此:

<DataTemplate x:Key="DataTemplate3">
  <TextBlock x:Name="PivotTitletxt" Height="34" TextWrapping="Wrap" Text="{Binding}" Width="447"/>
</DataTemplate>

在设置不透明度或更改前景时,如何访问此设置? 这样我就可以在自己的MainPage上使用它,例如PivotTitletxt.Opacity = 30; ...

谢谢!

@Sankarann给您的链接是一个很好的例子。

我会尝试将其放在您的方案中:

您的MainPivot具有PivotItems对吗? 因此,您在Loaded事件上要做的是:

var _mainPivot = MainPivot as Pivot
foreach (var _pivotItem in _mainPivot.Items)
{
var _container = _mainPivot.ItemContainerGenerator.ContainerFromItem(_pivotItem);
var _children = AllChildren(_container)
var _name = "PivotTitletxt";
var _control = (TextBlock)_Children.first(x=>x.Name == _name);
_control.Opacity  = 30;

} 

然后完全复制该站点中的AllChildren方法。

上面的代码可能会进行一些调整,因为我在没有VS的情况下完成了此操作...

希望能帮助到你。

问候,

============新答案==============

在WPF窗口中按类型查找所有控件

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                yield return (T)child;
            }

            foreach (T childOfChild in FindVisualChildren<T>(child))
            {
                yield return childOfChild;
            }
        }
    }
}

然后尝试:

TextBlock xx = FindVisualChildren<TextBlock>(mainPivot).FirsOrDefault(x=>x.name=="PivotTitletxt");

if(xx!=null)
xx.opacity = 30

再说一遍,这可能需要更正……我在没有VS的情况下全心全意地做到了。

试试看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM