2010-12-12 8 views
0

Ich habe einen Button in Blend erstellt, indem ich seinen Stil geändert habe. Ich fügte mehrere Textblöcke mit der Absicht hinzu, dem Benutzer Daten in Echtzeit anzuzeigen. Ich weiß jedoch nicht, wie ich mit diesen Textblöcken in meinem Code interagieren soll.Windows 7 Telefontaste mit mehreren Textblöcken

My Style XAML ist dies:

<ControlTemplate TargetType="Button"> 
         <Grid Background="Transparent"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="MouseOver"/> 
            <VisualState x:Name="Pressed"/> 
            <VisualState x:Name="Disabled"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource PhoneAccentBrush}" CornerRadius="0" Margin="8,12,12,12"> 
           <TextBlock Margin="121,5,98,0" TextWrapping="Wrap" Text="Current Program:" Height="36" VerticalAlignment="Top"/> 
          </Border> 
          <TextBlock Margin="92,68,80,81" TextWrapping="Wrap" Text="" RenderTransformOrigin="0.265,0.51" HorizontalAlignment="Center" Width="271" x:Name="programName"/> 
          <TextBlock Height="32" Margin="21,0,16,12" TextWrapping="Wrap" Text="Date:" VerticalAlignment="Bottom" x:Name="CurrentDate"/> 
         </Grid> 
        </ControlTemplate> 

Mein Code auf die Schaltfläche angezeigt wird, ist dies:

<Grid x:Name="middleRow" Grid.Row="2"> 
     <Button Content="Button" Margin="8,8,0,8" Style="{StaticResource ButtonCenter}" x:Name="Current" Click="Current_Click" d:LayoutOverrides="GridBox" /> 
    </Grid> 

In meinem Code hinter nach dem InitializeComponent(); Ich möchte den ProgramName-Textblock und den CurrentDate-Textblock ändern.

Ich denke, dass ich ein Steuerelement erstellen muss, um dies zu tun, aber ich bin mir nicht sicher. Meine Versuche scheiterten (verschiedene Fehler). Kann ich auf diese Textblöcke im Code zugreifen? Lass es mich wissen, bitte.

UPDATE:

Ich zog es wie folgt tun:

<Button Margin="8,8,0,8" x:Name="Current" Click="Current_Click"> 
    <Button.Content> 
     <StackPanel> 
      <TextBlock x:Name="ProgramName" Text="program name" HorizontalAlignment="Center" /> 
      <TextBlock x:Name="CurrentDate" Text="current date" HorizontalAlignment="Center" /> 
     </StackPanel> 
    </Button.Content> 
</Button> 

angewendet ich meine Styles aus der Vorlage in Blend und es scheint jetzt zu funktionieren.

Antwort

2

Sie können Steuerelemente in einem Stil nicht anhand des Namens referenzieren, da mehrere Kopien davon auf einer Seite vorhanden sein können.

Wenn Sie Ihre Schaltfläche in ein benutzerdefiniertes Steuerelement gemacht haben, könnten Sie den Text für die Eigenschaften ProgramTitle und CurrentDate machen (was sehr einfach zu setzen wäre).

Alternativ können Sie die Datenbindung auch verwenden, um diese Werte festzulegen.