Изменить содержание кнопки в стиле?

В Effective Java (2-е издание) рекомендуется использовать перечисления вместо статических целочисленных значений для констант.

Здесь есть хорошая рецензия на перечисления в Java: http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html

Обратите внимание, что в конце этой статьи поставлен вопрос:

Итак, когда вы должны использовать перечисления?

С ответом:

Каждый раз, когда вам нужен фиксированный набор констант

17
задан H.B. 25 November 2011 в 13:57
поделиться

3 ответа

ПРЕДУПРЕЖДЕНИЕ: Это может быть не лучший или правильный способ сделать это. Убедитесь, что вы прочитали и другие ответы на этой странице.

Совершенно уверен, что вы хотите использовать шаблон управления в такой ситуации. Что-то вроде:


<style>
    <Setter Property="Content">
        <Setter.Value>
            <ControlTemplate>
                <Image Img="something.jpg" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</style>

И добавьте шаблон элемента управления в триггер для при наведении.

Вот хорошая ссылка

-2
ответ дан 30 November 2019 в 11:04
поделиться

Фактическая ошибка возникает из-за того, что визуальные элементы не могут быть напрямую установлены в качестве значения Setter. Однако вы можете добиться желаемого поведения, установив ContentTemplate с помощью DataTemplate или создав свой контент в качестве ресурса, либо для кнопки, либо для другого места.

<Button>
    <Button.Resources>
        <CheckBox x:Key="Local_MouseOverContent" Content="Mouse is over" />
    </Button.Resources>
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Content" Value="No mouse over" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Content"
                            Value="{StaticResource Local_MouseOverContent}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

<Button>
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Content" Value="No mouse over" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate DataType="Button">
                                <CheckBox Content="Mouse is over" />
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
39
ответ дан 30 November 2019 в 11:04
поделиться

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

2
ответ дан 30 November 2019 в 11:04
поделиться
Другие вопросы по тегам:

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