Почему эта кнопка отключена? - PullRequest
4 голосов
/ 07 марта 2012

В следующем коде XAML текст кнопки наполовину отсутствует. Я могу изменить свойство Margin, и становится очевидно, что после 250px контент скрыт. Почему это так и как я могу это исправить?

<Window x:Class="InnerInterface.InventoryManagement" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="someWindow" Height="500" Width="500">
    <DockPanel HorizontalAlignment="Left" Name="dockPanel1" VerticalAlignment="Top">
        <Grid DockPanel.Dock="Top">
            <Button Name="buttonReturnToMainMenu" Content="someButton" Margin="200,0" Width="125" />
        </Grid>
    </DockPanel>
</Window>

Ответы [ 3 ]

16 голосов
/ 07 марта 2012

Горизонтальное поле равно 200, а ширина кнопки равна 125, что означает, что общая ширина, необходимая для правильного отображения элемента управления, составляет около 525.

У вас также есть HorizontalAlignment=Left" на вашем DockPanel, что означает, что он будет рисовать контент на нужной ширине и выравнивать его по левой стороне экрана, а не растягивать, чтобы заполнить все доступное пространство. Это означает, что он блокирует пробел в 200 по обе стороны от элемента управления и рисует кнопку в оставшееся место. Если это оставшееся пространство меньше 125, изображение будет обрезано.

Если вы переключитесь на HorizontalAlignment="Stretch", то он сначала нарисует элемент управления (с полями), а затем растянет его размер, чтобы он соответствовал всему доступному пространству, чтобы весь элемент управления был изменен, а не обрезан.

Возможно, вам будет интересно прочитать эту статью MSDN по выравниванию, полям и отступам в WPF.

Редактировать

Если вы хотите, чтобы only , поле Left было равно 200, тогда используйте Margin="200,0,0,0". Использование Margin="200,0" означает, что левые и правые поля будут равны 200.

1 голос
/ 07 марта 2012

Проблема в том, что кнопка Margin установлена ​​как:

Margin="200,0"

Она должна быть установлена ​​как:

Margin="200,0,0,0"

Это устраняет поле справа ився кнопка, чтобы показать.

1 голос
/ 07 марта 2012

Не совсем уверен в вашей проблеме, но, возможно, это должно помочь:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="500" Width="500">
    <DockPanel HorizontalAlignment="Stretch" Name="dockPanel1" VerticalAlignment="Top">
        <Grid DockPanel.Dock="Top" >
            <Button Name="buttonReturnToMainMenu" Content="someButton" Width="125"  />
        </Grid>
    </DockPanel>
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...