带有多个文本块的Windows 7 Phone按钮

时间:2010-12-12 16:49:39

标签: windows-phone-7 expression-blend

我通过编辑它的样式在Blend中创建了一个按钮。我添加了多个文本块,旨在实时向用户显示数据。但是,我不知道如何在后面的代码中与那些文本块进行交互。

我的风格XAML是这样的:

<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>

我显示按钮的代码是:

    <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>

在我的代码后面的InitializeComponent();我想更改ProgramName文本块和CurrentDate文本块。

我想我可能需要创建一个控件来执行此操作,但我不确定。我这样做的尝试失败了(错误的错误)。我可以在代码中访问这些文本块吗?请告诉我。

更新:

我这样做了:

<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> 

我在Blend的模板中应用了我的样式,它现在似乎正在运行。

1 个答案:

答案 0 :(得分:2)

您无法按名称引用样式中的控件,因为页面上可能有多个副本。

如果您将按钮设置为自定义控件,则可以为ProgramTitle和CurrentDate属性创建文本(这些属性很容易设置)。

或者,您可以使用数据绑定来设置这些值。