2016-07-05 3 views
2

Как получить доступ к именованному элементу управления, который находится в шаблоне содержимого contentpresenter. как получить доступ к элементу управления веб-просмотром (x: name = detView) из файла cs.Доступ к элементу управления, который находится в contentpresenter в C#

 <ContentPresenter 
      x:Name="DetailContentPresenter" 
      Grid.Row="0" 
      BorderBrush="{ThemeResource SystemControlForegroundBaseLowBrush}" 
      Content="{x:Bind coll.SelectedItem,Mode=OneWay}"> 
      <ContentPresenter.ContentTemplate> 
       <DataTemplate x:DataType="data:coll_Details" x:Name="ttt"> 
        <Grid> 
          <WebView DefaultBackgroundColor="#F5F5F5" x:Name="detView" Source="ms-appx-web:///Assets/Web/collDetails.html"/> 
        </Grid> 
       </DataTemplate> 
      </ContentPresenter.ContentTemplate> 
      <ContentPresenter.ContentTransitions> 
       <TransitionCollection/> 
      </ContentPresenter.ContentTransitions> 
     </ContentPresenter> 

ответ

0

В C#, используйте этот код, чтобы найти любой элемент управления, который присутствует в вашем ContentPresenter.

Если в вашем ContentPresenter присутствует ContentPresenter, сначала создайте объект TextBlock, затем выполните его, а затем найдите элемент управления.

TextBlock myTextBlock = (TextBlock)ttt.FindName(“textBlock”, DetailContentPresenter); 
1

Если вы используете ContentPresenter в ControlTemplate как пример Official Documentation.

Вы можете скачать шаблон сайта через controlName.ContentTemplateRoot. Я сделал демонстрацию из примера официальной документации выше и разместил webview внутри DataTemplate.

MainPage.xaml:

<Page.Resources> 
    <Style TargetType="HyperlinkButton" x:Key="myStyle" > 
     ... 
     <Setter Property="Template" x:Name="presenterSetter"> 
      <Setter.Value> 
       <ControlTemplate TargetType="HyperlinkButton"> 
        <Grid x:Name="rootGrid"> 
         ... 
         <Border x:Name="Border" 
          Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          Margin="3"> 
          <ContentPresenter x:Name="MyContentPresenter" 
              Content="{TemplateBinding Content}" 
              ContentTransitions="{TemplateBinding ContentTransitions}" 
              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
         > 
           <ContentPresenter.ContentTemplate> 
            <DataTemplate x:Name="ttt"> 
             <Grid> 
              <WebView Source="ms-appx-web:///Assets/Web/default.html" Name="myWebView"/> 
             </Grid> 
            </DataTemplate> 
           </ContentPresenter.ContentTemplate> 
          </ContentPresenter> 
         </Border> 
         <!--focus visuals omitted--> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Page.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <StackPanel VerticalAlignment="Bottom"> 
     <HyperlinkButton Name="myHyperlink" Style="{StaticResource myStyle}">This is a link</HyperlinkButton> 
     <Button Click="Button_Click" Name="myBtn">Click Me</Button> 
    </StackPanel> 
</Grid> 

И я могу получить WebView, используя коды ниже:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var myView= ((Grid)myHyperlink.ContentTemplateRoot).Children[0] as WebView; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^