Просто хочу разделить мой стиль кнопки из моего ResourceDictionary, который я использовал. Вы можете свободно изменять фон onHover в триггерах стиля. " ColorAnimation To = * ваш желаемый BG (i.e # FFCEF7A0)". Кнопка BG также автоматически вернется к исходному BG после состояния mouseOver. Вы даже можете установить, насколько быстро переход.
Словарь ресурсов
<Style x:Key="Flat_Button" TargetType="{x:Type Button}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="50"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="FontFamily" Value="Arial Narrow"/>
<Setter Property="FontSize" Value="12px"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Opacity="1" Color="White"/>
</Setter.Value>
</Setter>
<Setter Property="Background" >
<Setter.Value>
<SolidColorBrush Opacity="1" Color="#28C2FF" />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border"
SnapsToDevicePixels="True"
BorderThickness="1"
Padding="4,2"
BorderBrush="Gray"
CornerRadius="3"
Background="{TemplateBinding Background}">
<Grid>
<ContentPresenter
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="#D2F898"
Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
FillBehavior="HoldEnd" Duration="0:0:0.25" AutoReverse="False" RepeatBehavior="1x"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
FillBehavior="HoldEnd" Duration="0:0:0.25" AutoReverse="False" RepeatBehavior="1x"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
все, что вам нужно сделать, это вызовите стиль.
Пример реализации
<Button Style="{StaticResource Flat_Button}" Height="Auto"Width="Auto">
<StackPanel>
<TextBlock Text="SAVE" FontFamily="Arial" FontSize="10.667"/>
</StackPanel>
</Button>
У меня есть аналогичная ситуация с одним из моих проектов. Все удалить представления для большинства контроллеров разрабатываются тот же путь, отображают те же поля подтверждения, и просто представляет предсказуемый дисплей любого объекта, удаляется.
решение было довольно просто и изящно, по-моему. Проще говоря, то, что мы (разработчики) сделали, было, создают новый каталог в app/views
названный shared
и помещают разделенные взгляды там. Они могли быть полными шаблонными файлами или просто partials.
я предложил бы использовать общий шаблон (ни в категориях, ни в фото каталогах представления, а скорее в общем каталоге) и представить его вручную от представления.
, например, имеют метод как таковой в обоих контроллерах и файле app/views/shared/photo.html.erb
:
def show
@photo = Photo.first # ... or whatever here
render :template => 'shared/photo'
end
Это должно успешно представить общий шаблон. Это - маршрут DRYest и не имеет чувства загрязнения, которое Вы получаете при использовании более или менее пустого представления в каталоге представления каждого контроллера только для включения общего частичного, поскольку я понимаю, что вопрос предлагает.
Я использовал бы помощника, потому что они - общие для представления. Для части HTML я использовал бы partials, таким образом, это будет соединение обоих путей.