Изменить изображение ChildWindow CloseButton Silverlight 3 - PullRequest
0 голосов
/ 29 сентября 2011

Я изменяю стиль ChildWindow по умолчанию, и я хотел бы указать другое изображение, чем «X», которое есть по умолчанию.Я пробовал разные вещи, такие как подключение к OnApplyTemplate и OnOpened, где я могу получить программный доступ к кнопке, например:

Button closeButton = this.GetTemplateChild("CloseButton") as Button;

Все же closeButton.Content всегда равен нулю.Я попытался установить это в свой Image, и он действительно установлен, но пользовательский интерфейс по-прежнему отображает «X» по умолчанию.Я также вызвал UpdateLayout () безрезультатно.

Есть ли способ сделать это либо программно, либо через XAML?Я скопировал стиль по умолчанию и внес изменения, на которые это повлияло, но это одно изменение, которое поставило меня в тупик.Ниже приведен фрагмент стиля XAML, с которым я работал:

<!-- Header with Title-->
<Border x:Name="Chrome" Width="Auto" CornerRadius="5,5,0,0" Background="{StaticResource ChildWindowHeaderBackgroundBrush}">
    <Grid Height="Auto" Width="Auto">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="30"/>
        </Grid.ColumnDefinitions>
        <ContentControl Content="{TemplateBinding Title}"
            IsTabStop="False"
            FontWeight="Bold"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Center"
            Margin="6,0,6,0"/>    
        <Button x:Name="CloseButton" Margin="0,5,0,5" Grid.Column="2" IsTabStop="False" HorizontalAlignment="Center" VerticalAlignment="Center" Width="15" Height="14" Style="{StaticResource ButtonStyle}"/>
    </Grid>
</Border>

Я добавил изображение на кнопку через XAML, но оно все еще не отображается.

1 Ответ

0 голосов
/ 30 сентября 2011

Все это обрабатывается через стиль в шаблоне ControlTemplate:

<Style x:Key="ButtonStyle" TargetType="Button">
    <Setter Property="Padding" Value="0"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                      <VisualStateGroup x:Name="CommonStates">
                        <VisualState x:Name="Disabled"/>
                        <VisualState x:Name="Normal"/>
                        <VisualState x:Name="Pressed"/>
                        <VisualState x:Name="MouseOver">
                          <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="mouseOverImage">
                              <DiscreteObjectKeyFrame KeyTime="0">
                                <DiscreteObjectKeyFrame.Value>
                                  <Visibility>Visible</Visibility>
                                </DiscreteObjectKeyFrame.Value>
                              </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="normalImage">
                              <DiscreteObjectKeyFrame KeyTime="0">
                                <DiscreteObjectKeyFrame.Value>
                                  <Visibility>Collapsed</Visibility>
                                </DiscreteObjectKeyFrame.Value>
                              </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames>
                          </Storyboard>
                        </VisualState>
                      </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Image x:Name="normalImage" Margin="0" Source="/img/status_unknown.png" Stretch="None" />
                    <Image x:Name="mouseOverImage" Margin="0" Source="/img/up.png" Stretch="None" Visibility="Collapsed" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...