WEB开发网
开发学院图形图像Flash 快速浏览Silverlight3 Beta: SystemColor(系统颜色... 阅读

快速浏览Silverlight3 Beta: SystemColor(系统颜色)

 2009-05-07 12:05:57 来源:WEB开发网   
核心提示: 相应的XAML 如下;<UserControl x:Class="SilverlightApplication36.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen

相应的XAML 如下;

<UserControl
    x:Class="SilverlightApplication36.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
    xmlns:local="clr-namespace:SilverlightApplication36">
    <UserControl.Resources>
        <Style
            x:Key="buttonStyle" TargetType="Button">
            <Setter
                Property="Template">
                <Setter.Value>
                    <ControlTemplate
                        TargetType="Button">
                        <Grid>
                            <vsm:VisualStateManager.VisualStateGroups>
                                <vsm:VisualStateGroup
                                    x:Name="CommonStates">
                                    <vsm:VisualState
                                        x:Name="Normal" />
                                    <vsm:VisualState
                                        x:Name="MouseOver">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames
                                                Storyboard.TargetName="BackgroundAnimation"
                                                Storyboard.TargetProperty="Opacity">
                                                <SplineDoubleKeyFrame
                                                    KeyTime="0"
                                                    Value="1" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </vsm:VisualState>
                                    <vsm:VisualState
                                        x:Name="Pressed">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames
                                                Storyboard.TargetName="BackgroundAnimation"
                                                Storyboard.TargetProperty="Opacity">
                                                <SplineDoubleKeyFrame
                                                    KeyTime="0"
                                                    Value="1" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </vsm:VisualState>
                                    <vsm:VisualState
                                        x:Name="Disabled">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames
                                                Storyboard.TargetName="DisabledVisualElement"
                                                Storyboard.TargetProperty="Opacity">
                                                <SplineDoubleKeyFrame
                                                    KeyTime="0"
                                                    Value=".55" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </vsm:VisualState>
                                </vsm:VisualStateGroup>
                                <vsm:VisualStateGroup
                                    x:Name="FocusStates">
                                    <vsm:VisualState
                                        x:Name="Focused">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames
                                                Storyboard.TargetName="FocusVisualElement"
                                                Storyboard.TargetProperty="Opacity">
                                                <SplineDoubleKeyFrame
                                                    KeyTime="0"
                                                    Value="1" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </vsm:VisualState>
                                    <vsm:VisualState
                                        x:Name="Unfocused" />
                                </vsm:VisualStateGroup>
                            </vsm:VisualStateManager.VisualStateGroups>
                            <Border
                                x:Name="Background"
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                CornerRadius="3">
                                <Grid
                                    Margin="1"
                                    Background="{TemplateBinding Background}">
                                    <Border
                                        x:Name="BackgroundAnimation"
                                        Opacity="0"
                                        Background="{TemplateBinding Background}" />
                                </Grid>
                            </Border>
                            <ContentPresenter
                                x:Name="contentPresenter"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                Margin="{TemplateBinding Padding}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                Content="{TemplateBinding Content}"
                                ContentTemplate="{TemplateBinding ContentTemplate}" />
                            <Rectangle
                                x:Name="DisabledVisualElement"
                                Fill="#FFFFFFFF"
                                RadiusX="3"
                                RadiusY="3"
                                IsHitTestVisible="false"
                                Opacity="0" />
                            <Rectangle
                                x:Name="FocusVisualElement"
                                Stroke="{TemplateBinding BorderBrush}"
                                StrokeThickness="1"
                                RadiusX="2"
                                RadiusY="2"
                                Margin="1"
                                IsHitTestVisible="false"
                                Opacity="0" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <local:MySystemStyles
            x:Key="mySystemStyles"
            BasedOnButtonStyle="{StaticResource buttonStyle}"/>
    </UserControl.Resources>
    <Grid
        x:Name="LayoutRoot">
        <Grid.Resources>
        </Grid.Resources>
        <Button
            Style="{Binding Source={StaticResource mySystemStyles},Path=ButtonStyle}"
            Content="Click Me"
            FontSize="24"
            HorizontalAlignment="Center"
            VerticalAlignment="Center" />
    </Grid>
</UserControl>

现在,它可以按我起初的想法,很好的运行了。当我在Windows中修改我的颜色主题时并刷新当前的Silverlight 应用,按钮会去获取已修改的系统颜色.

但是,目前在按钮上只有三个属性可以设置. 我需要为每个控件设置一系列的styles,然后再去扩展MySystemStyles 类,诸如一些:ComboBoxStyle, TreeViewStyle, TextBoxStyle 属性等等。它也必须包括诸如BasedOnComboBoxStyle 或 BasedOnTreeViewStyle属性等等.

哎…虽然可以工作,但应该还有更好的变法吧?

上一页  1 2 3 4 5 6 

Tags:快速 浏览 Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接