2016-11-09 16 views
-1

Мои позади кода только в одной строке, следующим образом:Почему не удается получить элементы из controlTemplate?

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

Xaml файл, как следующие:

  <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}">​

Использование Me.simpleButton.Template.FindName("name of elements", simpleButton) не может получить какие-либо элементы (такие, как: "границы" , "line1" и т. д.) из простого шаблона управления Button. Как мне это сделать?

+0

Я думаю, это WPF? – Liam

+0

Я думаю, вы пропустили тип цели. set target TargetType = "{x: Тип Button}". Может быть, это сработает. –

+0

Я пробовал то, что вы сказали, Его все еще не работает –

ответ

0

Чтобы найти предметы, вам необходимо использовать FrameworkElement.GetTemplateChild().

Вот пример C#.

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

Я думаю, что это будет эквивалент VB.

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

'GetTemplateChild' не является членом 'System.Windows.Controls.ControlTemplate'. Но я использовал Me.GetTemplateChild («testbtn»), что доза не работает. –

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