Я работаю над проектом, который изначально был создан кем-то другим, у них есть словарь ресурсов xaml, содержащий все стили кнопок, которые используются во всем решении.
Я переделываю окно в решении, и это действительно помогло бы мне узнать, какие кнопки выглядят как, и так, и я знаю, какие могут работать где-то еще, и поэтому я могу очистить части стиля, которые соответствуют новой кнопке. пытаюсь сделать.
Моя проблема в том, что есть более 30 различных стилей кнопок для просмотра.
Кто-нибудь знает о хорошем способе предварительного просмотра результатов применения стиля к его targetType? Это не должно быть простым, просто, надеюсь, настолько простым, насколько это возможно в данных обстоятельствах.
note Я попробовал Expression, я не увидел там никакой опции, но я никогда не экспериментировал с ней.
Лучшее, о чем я могу подумать сейчас, - это создать пустое окно, содержащее только кнопку, которую я затем наберу в стиле, который я хочу проверить, и я просто прохожу, пока не найду то, что хочу. У кого-нибудь есть лучшая система?
Ниже приведен пример стиля, если он помогает, но, похоже, он сам имеет много зависимостей. Я только на 2-м месяце Silverlight, так что прохождение 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>
Редактировать
Похоже, я был слишком быстр, чтобы отклонить выражение. По умолчанию (в любом случае я предполагаю, что по умолчанию) есть вкладка ресурса в правой части программы (рядом со свойствами и данными). Если он не открыт, вы можете перейти в меню и выбрать «Окно» -> «Ресурсы».
Оттуда отображаются все ваши ресурсы, сгруппированные по файлам xaml, для предварительного просмотра того, как будет выглядеть стиль, нажмите кнопку справа от соответствующего имени. Только один тип кнопок не отображался должным образом (утверждалось, что было дублированное имя ключа, не понимаю, почему это помешает предварительному просмотру, но это так, поэтому я предполагаю, что другие сложности приведут к аналогичному результату).
В настоящее время я осматриваю VS2010, чтобы узнать, смогу ли я найти подобную функциональность, но в настоящее время я сомневаюсь, что это так, поскольку это кажется более выразительным.
Так что, если кто-то знает о функции, присутствующей в Visual Studio 2010, пожалуйста, дайте мне знать, так как это избавит меня от необходимости переключаться между проектами и обновлять проекты, как только я начну редактировать. Я также хотел бы избежать покупки Expression, если смогу.