Два контроллера для разделенных взглядов в Ruby on Rails

Просто хочу разделить мой стиль кнопки из моего 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>
25
задан blank 27 January 2009 в 06:12
поделиться

3 ответа

У меня есть аналогичная ситуация с одним из моих проектов. Все удалить представления для большинства контроллеров разрабатываются тот же путь, отображают те же поля подтверждения, и просто представляет предсказуемый дисплей любого объекта, удаляется.

решение было довольно просто и изящно, по-моему. Проще говоря, то, что мы (разработчики) сделали, было, создают новый каталог в app/views названный shared и помещают разделенные взгляды там. Они могли быть полными шаблонными файлами или просто partials.

я предложил бы использовать общий шаблон (ни в категориях, ни в фото каталогах представления, а скорее в общем каталоге) и представить его вручную от представления.

, например, имеют метод как таковой в обоих контроллерах и файле app/views/shared/photo.html.erb:

def show
  @photo = Photo.first # ... or whatever here
  render :template => 'shared/photo'
end

Это должно успешно представить общий шаблон. Это - маршрут DRYest и не имеет чувства загрязнения, которое Вы получаете при использовании более или менее пустого представления в каталоге представления каждого контроллера только для включения общего частичного, поскольку я понимаю, что вопрос предлагает.

38
ответ дан Bo Jeanes 15 October 2019 в 16:13
поделиться

Я использовал бы помощника, потому что они - общие для представления. Для части HTML я использовал бы partials, таким образом, это будет соединение обоих путей.

1
ответ дан Keltia 15 October 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: