【问题标题】:Previewing template results for resources in Silverlight在 Silverlight 中预览资源的模板结果
【发布时间】:2011-07-28 19:33:13
【问题描述】:

我正在处理一个最初由其他人创建的项目,他们有一个 xaml 资源字典,其中包含整个解决方案中使用的所有按钮样式。

我正在修改解决方案中的一个窗口,它确实有助于我了解哪些按钮看起来像什么,所以我知道哪些可以在其他地方工作,所以我可以清理适合我的新按钮的样式尝试制作。

我的问题是有超过 30 种不同的按钮样式可供查看。

是否有人知道预览将样式应用于其 targetType 的结果的好方法?它不需要很简单,只要在具体情况下尽可能简单即可。

注意我尝试了 Expression,我没有在其中看到任何选项,但我还没有真正尝试过它。

我现在能想到的最好的事情是创建一个只包含一个按钮的空白窗口,然后我输入我想要查看的样式,然后我一直浏览直到找到我想要的。谁有更好的系统?

我在下面包含了一个样式示例,以防它有帮助,但看起来它本身有很多依赖项。我只在 Silverlight 的第 2 个月,所以通过下面的 30+ 有点令人生畏。

<Style  TargetType="Button" x:Key="RightButtonBarButtonStyle">
        <Setter Property="Padding" Value="15,0,15,0" />
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="FontFamily" Value="Segoie"/>
        <Setter Property="FontSize" Value="13"/>
        <Setter Property="Padding" Value="3"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush">
            <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FFA3AEB9" Offset="0"/>
                    <GradientStop Color="#FF8399A9" Offset="0.375"/>
                    <GradientStop Color="#FF718597" Offset="0.375"/>
                    <GradientStop Color="#FF617584" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid x:Name="grid" RenderTransformOrigin="0.5,0.5" Height="25">
                        <Grid.RenderTransform>
                            <CompositeTransform/>
                        </Grid.RenderTransform>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0:0:0.2">
                                        <VisualTransition.GeneratedEasingFunction>
                                            <CubicEase EasingMode="EaseOut"/>
                                        </VisualTransition.GeneratedEasingFunction>
                                    </VisualTransition>
                                </VisualStateGroup.Transitions>
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" To="0.7" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" To="0.98" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                                        <DoubleAnimation Duration="0" To="0.98" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                                        <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="DisabledVisualElement" d:IsOptimized="True"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="DisabledVisualElement"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>

                            <VisualStateGroup x:Name="FocusStates">
                                <VisualState x:Name="Focused"/>
                                <VisualState x:Name="Unfocused"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border x:Name="border" BorderBrush="{StaticResource CoreButtonBorderBrush}" BorderThickness="0,1,1,1" CornerRadius="0,15,15,0"  Background="{StaticResource CoreButtonBackgroundBrush}"/>
                        <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="10,0,10,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        <Border BorderBrush="Black" BorderThickness="0" Height="1" Margin="11,1,11,0" VerticalAlignment="Top" Background="{StaticResource CoreButtonTopLineBrush}"/>
                        <Border BorderBrush="Black" BorderThickness="0" Height="1" Margin="12,0,13,-1" Background="{StaticResource CoreButtonBottomLineBrush}" VerticalAlignment="Bottom" Opacity="0.5"/>
                        <Border x:Name="DisabledVisualElement" Background="Black" IsHitTestVisible="false" Opacity="0" CornerRadius="0,15,15,0" />

                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

编辑 看来我太快忽略了Expression。默认情况下(无论如何我都假设默认)程序右侧有一个资源选项卡(在属性和数据旁边)。如果它没有打开,您可以转到菜单并选择 Window->Resources。

从那里显示按 xaml 文件分组的所有资源,要预览样式的外观,请按相应名称右侧的按钮。只有一种按钮类型没有正确显示(声称有重复的键名,不明白为什么会阻止预览但确实如此,所以我猜其他并发症会导致类似的结果)。

我目前正在查看 VS2010 是否可以找到类似的功能,但我目前怀疑是否存在,因为这似乎更像是一种表达方式。

因此,如果有人知道 Visual Studio 2010 中存在的功能,请告诉我,因为这将使我不必在开始编辑后在项目之间跳转和刷新项目。如果可以的话,我也想避免购买 Expression。

【问题讨论】:

    标签: silverlight xaml styles preview


    【解决方案1】:

    看来我太快了,无法关闭 Expression。默认情况下(无论如何我都假设默认)程序右侧有一个资源选项卡(在属性和数据旁边)。如果它没有打开,您可以转到菜单并选择 Window->Resources。

    从那里显示按 xaml 文件分组的所有资源,要预览样式的外观,请按相应名称右侧的按钮。只有一个按钮类型没有正确显示(声称有一个重复的键名,不明白为什么会阻止预览但确实如此,所以我猜其他并发症会导致类似的结果)。

    我目前正在查看 VS2010 是否可以找到类似的功能,但我目前怀疑是否存在,因为这似乎更像是一种表达方式。

    因此,如果有人知道 Visual Studio 2010 中存在的功能,请告诉我,因为这将使我不必在开始编辑后在项目之间跳转和刷新项目。如果可以的话,我也想避免购买 Expression。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 2019-04-20
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多