Можно ли установить одну сторону поля или отступа, чтобы не перекрывать стиль по умолчанию? - PullRequest
1 голос
/ 11 мая 2011

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

Фрагмент моего словаря ресурсов выглядит следующим образом:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="Button">
        <Setter Property="Margin" Value="4"/>
        <Setter Property="MinWidth" Value="75"/>
        <Setter Property="Padding" Value="10,2"/>
    </Style>

</ResourceDictionary>

Обратите внимание, что я устанавливаю для поля значение 4 для всех сторон.Это замечательно, поскольку обеспечивает разрыв между кнопками без необходимости явно определять интерфейс.Я хочу знать, как я могу для одной кнопки убрать зазор на одной стороне, не задавая «4» для других сторон, чтобы позволить ему встать на сторону родителя.

Я надеваюне хочу делать следующее, поскольку оно отличается от стиля (то есть, если я изменяю 4 на 5 в моем стиле, мне также нужно сделать это здесь):

<DockPanel>
    <Button DockPanel.Dock="Left" Content="My Button" Margin="0,4,4,4" />
</DockPanel>

Я просто хочу установить MarginLeftкаким-то образом и оставив другие в качестве стиля по умолчанию, который я определил.

ПРИМЕЧАНИЕ : у меня есть обходной путь, который заключается в простом использовании именованного стиля "buttonLeft", который определен в словаре ресурсовбез левого поля.

Ответы [ 2 ]

1 голос
/ 11 мая 2011

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

0 голосов
/ 11 мая 2011

Понимая, что на этот вопрос уже дан ответ, я все равно решил проверить это в XamlPad:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         MinWidth="500" MinHeight="200">
    <UserControl.Resources>
            <Style TargetType="Button">
            <Setter Property="Margin" Value="6"/>
            <Setter Property="MinWidth" Value="75"/>
            <Setter Property="Padding" Value="10,2"/>
        </Style>
</UserControl.Resources>
<Grid>
    <Grid.Margin>
        <Thickness Top="20" />
    </Grid.Margin>
    <Button Content="Test" />
</Grid>

Однако, похоже, добавьте 20 к 6, что даст вам26 в качестве верхнего поля и 6 слева, справа и снизу.

Итак, если бы я хотел 20, мне пришлось бы поставить 14.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...