2016-11-09 2 views
-1

Mein hinter Code nur eine Zeile wie folgt:Warum können die Elemente von controlTemplate nicht abgerufen werden?

Dim btn As Button = 
       CType(Me.simpleButton.Template.FindName("testbtn", simpleButton), Button) 

XAML-Datei wie folgt:

  <Button x:Name="simpleButton" 
 
        Grid.Row="0" 
 
        Grid.RowSpan="5" 
 
        Grid.Column="1" 
 
        Command="{Binding SimpleOnCommand}" 
 
        Focusable="False"> 
 
       <Button.Template> 
 
        <ControlTemplate> 
 
         <Border x:Name="border" 
 
           Background="{TemplateBinding Background}" 
 
           BorderBrush="Black" 
 
           BorderThickness="1" 
 
           CornerRadius="50"> 
 
          <Border.Triggers> 
 
           <EventTrigger 
 
            <EventTrigger RoutedEvent="MouseRightButtonDown"> 
 
            <EventTrigger.Actions> 
 
             <BeginStoryboard x:Name="rotateLine"> 
 
              <Storyboard Storyboard.TargetName="line11" Storyboard.TargetProperty="(RotateTransform.Angle)"> 
 
               <DoubleAnimation By="360" 
 
                   Duration="0:0:1.5" 
 
                   RepeatBehavior="Forever" /> 
 
              </Storyboard> 
 
             </BeginStoryboard> 
 
            </EventTrigger.Actions> 
 
           </EventTrigger> 
 
           <EventTrigger InputMethod.IsInputMethodEnabled="True" RoutedEvent="MouseRightButtonUp"> 
 
            <RemoveStoryboard BeginStoryboardName="rotateLine" /> 
 
           </EventTrigger> 
 
          </Border.Triggers> 
 
          <Viewbox x:Name="myView" 
 
            Width="65" 
 
            Height="65"> 
 
           <Canvas x:Name="myCanvas" 
 
             Width="65" 
 
             Height="65"> 
 
            <Canvas.CacheMode> 
 
             <BitmapCache /> 
 
            </Canvas.CacheMode> 
 
            <Button x:Name="testbtn"></Button> 
 
            <Line x:Name="line1" 
 
              RenderTransformOrigin="0,0" 
 
              Stroke="Black" 
 
              StrokeEndLineCap="Round" 
 
              StrokeStartLineCap="Round" 
 
              StrokeThickness="5" 
 
              X1="{Binding X1}" 
 
              X2="{Binding X2}" 
 
              Y1="{Binding Y1}" 
 
              Y2="{Binding Y2}">​

Verwenden Me.simpleButton.Template.FindName("name of elements", simpleButton) alle Elemente nicht bekommen können (wie zum Beispiel: "Grenze" , "line1" usw.) aus der SimpleButton-Steuerelementvorlage. Wie soll ich es machen ?

+0

Ich denke, das ist WPF? – Liam

+0

Ich glaube, du hast den Zieltyp verpasst. setze target TargetType = "{x: Type Button}". Vielleicht wird es funktionieren. –

+0

Ich habe versucht, was Sie gesagt haben, es funktioniert immer noch nicht –

Antwort

0

Sie müssen FrameworkElement.GetTemplateChild() verwenden, um die Elemente zu finden.

Hier ist ein C# -Beispiel.

Border iconBorder = GetTemplateChild("PART_SearchIconBorder") as Border; 

Ich denke, das wäre das VB-Äquivalent.

Dim btn As Button = 
       CType(Me.simpleButton.Template.GetTemplateChild("testbtn"), Button) 
+0

'GetTemplateChild' ist kein Mitglied von 'System.Windows.Controls.ControlTemplate'. Aber ich habe Me.GetTemplateChild ("testbtn") benutzt, die nicht funktioniert. –

Verwandte Themen