![](/img/trans.png)
[英]How to get controls inside Pivot.ItemTemplate in Pivot in UWP?
[英]How to access controls inside an ItemTemplate
使用Windows Phone 8,C#。
我所做的基本上是编辑枢纽项目。 我将其命名为MainPivot
并在其中编辑了Pivot Item Title并在其中添加了一个名为PivotTitletxt
的TextBlock
。 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的情况下完成了此操作...
希望能帮助到你。
问候,
============新答案==============
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.