2012-06-27 3 views
0

Я попытался установить свойство width и height в свой шаблон управления шаблонами данных, но мой элемент управления сохраняет свой размер по умолчанию.WPF: Resize DataTemplate

<ItemsControl Grid.Row="1" x:Name="containerUsers" ItemsSource="{Binding ValidUsers}" > 
       <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
         <WrapPanel IsItemsHost="True" AllowDrop="True" ClipToBounds="False" DragEnter="panelUsers_DragEnter" Drop="panelUsers_Drop" /> 
        </ItemsPanelTemplate> 
       </ItemsControl.ItemsPanel> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <my:PictureLabelControl Width="20" Height="50" /> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 

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

<UserControl x:Class="VHTService.Wfm.View.PictureLabelControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" Cursor="Hand" Focusable="True" Margin="3"> 
<Grid> 
    <Grid Name="grid1"> 
     <Label Content="{Binding LabelText}" Focusable="True" FontSize="12" FontWeight="Normal" HorizontalContentAlignment="Center" 
       Name="lblPicture" VerticalContentAlignment="Center" Height="26" VerticalAlignment="Bottom" /> 
     <Image Source="{Binding Picture}" Focusable="True" Name="imgAvatar" Stretch="Uniform" Margin="0,0,0,26" GotFocus="imgAvatar_GotFocus" 
       LostFocus="imgAvatar_LostFocus" /> 
    </Grid> 
</Grid> 

ответ

1

Я сделал следующее пример окна и элементы соблюдать размер заданного. Не могли бы вы разместить PictureLabelControl? Я думаю, что ошибка где-то там.

<Window 
    x:Class="Project1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow" 
    Height="350" 
    Width="525"> 
    <ItemsControl> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel 
        IsItemsHost="True" 
        AllowDrop="True" 
        ClipToBounds="False"/> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <TextBlock 
        Background="Gray" 
        Text="{Binding}" 
        Width="50" 
        Height="50"/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
     <ItemsControl.Items> 
      <System:String>foo1</System:String> 
      <System:String>foo2</System:String> 
     </ItemsControl.Items> 
    </ItemsControl> 
</Window> 
+0

Я просто попытался положить размер настройки по умолчанию для моего пользовательского элемента управления, и теперь, он принимает размер контейнера панели – Akhilleus

+0

Попробуйте установить HorizontalAlignment и VerticalAlignment на контроль внутри UserControl растягиваться. Это должно заставить их заполнить весь шаблон. – Mizipzor

+0

На самом деле, я не хочу растягивать свой «UserControl», это то, что сейчас. Я хочу сделать так, как в вашем примере, который хорошо работает с «TextBlock», но не с моим «PictureLabelControl» – Akhilleus