2014-09-30 2 views
0

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

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

Я тестировал стандартное управление текстовым полем и устанавливал свойство Anchor для Top, Left, Bottom прекрасно работает. Я не понимаю, почему он не работает для содержания элемента хозяина

<UserControl x:Class="MyControls.ucEventViewerOptions" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/,arkup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="297" d:DesignWidth="128" Loaded="UserControl_Loaded"> 
    <Grid Width="96" Height="288"> 
     <DataGrid AutoGenerateColumns="False" Height="288" HorizontalAlignment="Left" Name="dgEventViewerOptions" VerticalAlignment="Top" Width="96" SelectionChanged="dgEventViewOptions_SelectionChanged" /> 
    </Grid> 
</UserControl> 
+0

Пожалуйста, разместите нерабочий образец XAML, чтобы мы могли указать, что не так. –

+0

Сделано, дайте мне знать, если вам нужно что-нибудь еще – user2248441

ответ

1

В WPF, этот тип поведения, как правило, вызвано HorizontalAlignment и VerticalAlignment свойствами. Исключение этих свойств приведет к их значению по умолчанию "Stretch" и позволит элементам управления изменять размер по отношению к родительским контейнерам. Это возможно только тогда, когда элементы управления не назначены фиксированными размерами.

В вашем случае, вы можете просто ommit этих свойств:

<UserControl x:Class="MyControls.ucEventViewerOptions" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/,arkup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="297" d:DesignWidth="128" Loaded="UserControl_Loaded"> 
    <Grid> 
     <DataGrid AutoGenerateColumns="False" Name="dgEventViewerOptions" SelectionChanged="dgEventViewOptions_SelectionChanged" /> 
    </Grid> 
</UserControl> 

Если вы не хотите их иметь фиксированную ширину или высоту, конечно.

+0

Это исправило проблему, благодаря кучу – user2248441

1

Если вы хотите детали, чтобы изменить размер в зависимости от родительских элементов размер вы должны иметь в виду, что ontrols неявно наследуя родителей протягивать поведение, когда размер не установлен явно. Таким образом, чтобы решить вашу проблему вам необходимо удалить настройки Width и Height явно:

<Grid> 
    <DataGrid AutoGenerateColumns="False" Name="dgEventViewerOptions" SelectionChanged="dgEventViewOptions_SelectionChanged" /> 
</Grid> 
+0

Спасибо большое, все отсортировано сейчас – user2248441

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