2013-08-06 20 views
5

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

wpf: Кнопки, текстовые поля, обрезанные

XAML КОД

<Grid> 
     <TabControl> 
      <TabItem Name="tabHome"> 
       <TabItem.Header> 
        <Label Content="Home" MouseLeftButtonDown="tabHome_Click"/> 
       </TabItem.Header> 
       <Grid> 
        <Button Content="Parse" Height="23" x:Name="btn_parse" Width="75" Click="buttonParse_Click" Margin="180,10,180,176"/> 
        <TextBox IsReadOnly="True" x:Name="txtbox_filepath" Height="25" Width="135" Margin="151,52,150,132" /> 
        <Button Content="Reset" Height="23" x:Name="btn_reset" Width="75" Margin="180,122,180,64" Click="buttonReset_Click"/> 
       </Grid> 
      </TabItem> 
      <TabItem Name="tabConfig"> 
       <TabItem.Header> 
       <Label Content="Configuration" MouseLeftButtonDown="tabConfig_Click"/> 
       </TabItem.Header> 
       <ScrollViewer> 
        <StackPanel Name="panelConfig"> 
        </StackPanel> 
       </ScrollViewer> 
      </TabItem> 
<Grid> 

Скриншот

screenshot

Как вы можете видеть кнопку и текстовое поле обрезается по углам.
Спасибо за помощь, которую я ценю.

ответ

8

Когда вы даете значение маржи, подобное этому Margin="180,10,180,176", то это означает, что элемент управления должен быть размещен на 180 градусов слева и 10 опуститься сверху, 180 справа и 176 снизу со ссылкой на родительский элемент управления. Ваши элементы управления были обрезаны из-за высоких значений Margin.

enter image description here

Примечание: провал - устройство независимых пикселей.

Лучше создать RowDefinitions для Grid и разместить элементы управления в отдельных строках с разумным значением маржи, как показано ниже.

<Grid> 
    <TabControl> 
     <TabItem Name="tabHome"> 
      <TabItem.Header> 
       <Label Content="Home"/> 
      </TabItem.Header> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
       </Grid.RowDefinitions> 
       <Button Grid.Row="0" Content="Parse" Height="23" x:Name="btn_parse" Width="75" Margin="10" /> 
       <TextBox Grid.Row="1" IsReadOnly="True" x:Name="txtbox_filepath" Height="25" Width="135" Margin="10" /> 
       <Button Grid.Row="2" Content="Reset" Height="23" x:Name="btn_reset" Width="75" Margin="10"/> 
      </Grid> 
     </TabItem> 
     <TabItem Name="tabConfig"> 
      <TabItem.Header> 
       <Label Content="Configuration"/> 
      </TabItem.Header> 
      <ScrollViewer> 
       <StackPanel Name="panelConfig"> 
       </StackPanel> 
      </ScrollViewer> 
     </TabItem> 
    </TabControl> 
</Grid> 
+0

Спасибо, я принял ваше предложение, и теперь, как мне сделать промежуток между моими кнопками и текстовыми полями? – AustinT

+0

Дайте разумное значение маржи, например 5 или 10. Проверьте мой обновленный ответ. –

+0

спасибо! Я ценю вашу помощь! – AustinT

0

Удалить Height, Width и Margin объектов недвижимости.

Не используйте конструктор Visual Studio для создания пользовательских интерфейсов WPF.

Посмотрите на http://wpftutorial.net/LayoutProperties.html

+0

@ReedCopsey Это именно то, о чем я говорю. –

3

Вы явно устанавливая Height и Width для кнопок, но значения вы используете слишком малы.

Если оставить их, кнопка должна отображаться правильно:

<Button Content="Parse" x:Name="btn_parse" Click="buttonParse_Click" Margin="180,10,180,176"/> 
<Button Content="Reset" x:Name="btn_reset" Margin="180,122,180,64" Click="buttonReset_Click"/> 

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

Смежные вопросы