C# 如何在页面资源中找到子控件?

C# 如何在页面资源中找到子控件?,c#,xaml,windows-phone-7,windows-phone-8,data-binding,C#,Xaml,Windows Phone 7,Windows Phone 8,Data Binding,我们有一个Windows phone应用程序,其中Page.Resource中有DataTemplate。以下是xaml: <PhoneApplicationPage <PhoneApplicationPage.Resources> <DataTemplate> <ScrollViewer> // We want to fetch this control inside DataTemplate .. </ScrollViewer>

我们有一个Windows phone应用程序,其中Page.Resource中有DataTemplate。以下是xaml:

    <PhoneApplicationPage
<PhoneApplicationPage.Resources>
<DataTemplate>
<ScrollViewer> // We want to fetch this control inside DataTemplate
..
</ScrollViewer>
</DataTemplate>
</PhoneApplicationPage.Resources>

<Grid Name="LayoutRoot">
<ItemsControl ItemTemplate={StatisSource DataTemplate}>
</ItemsControl>
</Grid>

</PhoneApplicationPage

1不要为函数提供控件名

更改:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) ,"scrollViewer") as ScrollViewer;
<DataTemplate>
ScrollViewer ScrollViewer=FindChild((this.View.FindName(“AdSlider”)作为ItemsControl),“ScrollViewer”)作为ScrollViewer;
我在您的示例中没有看到任何名为AdSlider的控件

进入:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) , null);
<DataTemplate x:Key="dataTemplate1">
ScrollViewer ScrollViewer=FindChild((this.View.FindName(“AdSlider”)作为ItemsControl),null);
2为数据模板提供名称

更改:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) ,"scrollViewer") as ScrollViewer;
<DataTemplate>

进入:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) , null);
<DataTemplate x:Key="dataTemplate1">

3请同时更正

<ItemsControl ItemTemplate={StatisSource dataTemplate1}>

进入:


1不要为函数提供控件名称

更改:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) ,"scrollViewer") as ScrollViewer;
<DataTemplate>
ScrollViewer ScrollViewer=FindChild((this.View.FindName(“AdSlider”)作为ItemsControl),“ScrollViewer”)作为ScrollViewer;
我在您的示例中没有看到任何名为AdSlider的控件

进入:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) , null);
<DataTemplate x:Key="dataTemplate1">
ScrollViewer ScrollViewer=FindChild((this.View.FindName(“AdSlider”)作为ItemsControl),null);
2为数据模板提供名称

更改:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) ,"scrollViewer") as ScrollViewer;
<DataTemplate>

进入:

ScrollViewer scrollViewer = FindChild<ScrollViewer>((this.View.FindName("AdSlider") as ItemsControl) , null);
<DataTemplate x:Key="dataTemplate1">

3请同时更正

<ItemsControl ItemTemplate={StatisSource dataTemplate1}>

进入:



感谢您在Durin期间的反馈。但在完成所有建议后,FindChild方法返回一个异常“引用不是有效的可视dependencyobject”,因为它不接受参数作为DataTemplate。所以我们尝试了另一种方法:((this.View.FindName(“AdvertSlider”)作为SlideViewExtended.ItemTemplate.LoadContent()作为ScrollViewer)。但是这个方法创建了一个相同的UI元素副本,并不能帮助我们操纵ScrollViewer的滚动行为。但回顾过去,我不确定你在寻找什么。我还更正了代码不可见的第2点。我们正在尝试在Itemscontrol的datatemplate中查找scrollviewer,我们的任务是在之后滚动该scrollviewer。在什么情况下(Button.Click,…)要查找scrollviewer?感谢Durin的反馈。但我们还是设法通过使用附加属性来滚动scrollviewer。我们确实绑定了一个附加的垂直偏移属性,可以在这里找到:谢谢你的反馈。但在完成所有建议后,FindChild方法返回一个异常“引用不是有效的可视dependencyobject”,因为它不接受参数作为DataTemplate。所以我们尝试了另一种方法:((this.View.FindName(“AdvertSlider”)作为SlideViewExtended.ItemTemplate.LoadContent()作为ScrollViewer)。但是这个方法创建了一个相同的UI元素副本,并不能帮助我们操纵ScrollViewer的滚动行为。但回顾过去,我不确定你在寻找什么。我还更正了代码不可见的第2点。我们正在尝试在Itemscontrol的datatemplate中查找scrollviewer,我们的任务是在之后滚动该scrollviewer。在什么情况下(Button.Click,…)要查找scrollviewer?感谢Durin的反馈。但我们还是设法通过使用附加属性来滚动scrollviewer。我们确实绑定了此处找到的附加垂直偏移属性: