Windows 7 Phone кнопка с несколькими текстовыми блоками - PullRequest
0 голосов
/ 12 декабря 2010

Я создал кнопку в 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.

Я думаю, что мне, возможно, придется создать элемент управления, чтобы сделать это, но я не уверен. Мои попытки сделать это потерпели неудачу (разные ошибки). Могу ли я получить доступ к этим текстовым блокам в коде? Пожалуйста, дайте мне знать.

UPDATE:

Я закончил делать это так:

<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 Ответ

2 голосов
/ 13 декабря 2010

Нельзя ссылаться на элементы управления в стиле по имени, поскольку их может быть несколько копий на странице.

Если вы превратили свою кнопку в пользовательский элемент управления, вы могли бы сделать текст для ProgramTitle иСвойства CurrentDate (которые очень легко установить).

В качестве альтернативы вы можете использовать привязку данных для установки этих значений.

...