[英]How to Access Grid View from hub section Data Template Windows phone 8.1 in C#
[英]How to get access to controls from CB when using hub - Windows Phone 8.1
我正在Windows Phone 8.1中編寫應用程序,我想從Code-Behind訪問控件。
通常,一切正常,但是當我使用集線器時,我無法訪問Code-Behind中的字段。
<Hub x:Name="RHub">
<HubSection>
<DataTemplate>
<Grid>
<TextBox x:Name="Test5"/>
</Grid>
</DataTemplate>
</HubSection>
<HubSection>
<DataTemplate>
<Grid>
</Grid>
</DataTemplate>
</HubSection>
</Hub>
現在,在Code-Behind文件中沒有像Test5這樣的字段,只有RHub。
這是因為控件在DataTemplate內部。 克服此限制的一種簡單方法是掛接到Element Loaded事件。 這是XAML:
<HubSection Header="Trailers">
<DataTemplate>
<ListView x:Name="MovieTrailers" Loaded="MovieTrailers_Loaded">
</ListView>
</DataTemplate>
</HubSection>
和背后的代碼:
private void MovieTrailers_Loaded(object sender, RoutedEventArgs e)
{
var listView = (ListView)sender;
listView.ItemsSource = trailers;
}
如果要搜索列表視圖中的任何元素,可以使用類似以下方法:
public static DependencyObject FindChildControl<T>(DependencyObject control, string ctrlName)
{
int childNumber = VisualTreeHelper.GetChildrenCount(control);
for (int i = 0; i < childNumber; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(control, i);
FrameworkElement fe = child as FrameworkElement;
// Not a framework element or is null
if (fe == null) return null;
if (child is T && fe.Name == ctrlName)
{
// Found the control so return
Debug.WriteLine("Achou");
return child;
}
else
{
// Not found it - search children
DependencyObject nextLevel = FindChildControl<T>(child, ctrlName);
if (nextLevel != null)
return nextLevel;
}
}
return null;
}
並搜索:
private void findRectangle(ListView listView)
{
Rectangle ret = this.FindChildControl<Rectangle>(listView, "ret1") as Rectangle;
if(ret != null)
{
ret.Fill = new SolidColorBrush(this.color);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.