2016-09-01 2 views
0

내 WPF 프로젝트에서 UserControl (및 궁극적으로 Window) 내에있는 Grid 내에서 ItemsControl을가집니다. 창을 기본적으로 특정 크기로 만들고 싶으면 사용자가 원하는대로 창을 확장 할 수 있기를 원합니다 (특정 창 크기를 강제로 적용 할 수 없음).사용자가 창 크기를 조정할 수 있도록 허용하면서 Grid가 내용에 맞게 확장되지 않도록합니다.

ItemsControl이 채워지면 문제의 창이 최대 화면 크기로 조정됩니다. 이것은 창 크기에 구속되기를 원하기 때문에 엄청나게 짜증나지만, 내용의 크기에 맞춰서는 안됩니다.

어떻게하면됩니까? 문제의

GIF 데모 : http://imgur.com/U2e7PFO

<UserControl x:Class="TribeCast.Windows.PlaylistGenerationWizard.SetupSlide.SetupSlideView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:converters="clr-namespace:TribeCast.Converters" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:playlistGenerationWizard="clr-namespace:TribeCast.Windows.PlaylistGenerationWizard" 
     d:DesignHeight="491" 
     d:DesignWidth="678" 
     mc:Ignorable="d" Width="Auto" Height="Auto" MinHeight="425" MinWidth="600"> 
<Grid Margin="0" Background="{DynamicResource BackgroundGrey}"> 
    <Grid.RowDefinitions> 

     <RowDefinition Height="40" /> 
     <RowDefinition Height="32" /> 
     <RowDefinition Height="32" /> 
     <RowDefinition /> 
     <RowDefinition Height="42" /> 
     <RowDefinition Height="42" /> 

    </Grid.RowDefinitions> 
    <Label Grid.Row="0" 
     Margin="6,0,0,0" Content="Playlist Setup" FontSize="18.667" Foreground="{DynamicResource TextLight}" Padding="0" VerticalAlignment="Center"/> 
    <TextBlock Grid.Row="1" 
     Margin="6,5,0,5" Foreground="{DynamicResource TextDark}"><Run Text="Please define how many duplicates of each item should appear in the playlist"/></TextBlock> 
    <Grid Grid.Row="2" 
     Margin="0" Height="30" Background="{DynamicResource RowItem}"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="105" /> 
      <ColumnDefinition Width="60" /> 
      <ColumnDefinition Width="105" /> 
      <ColumnDefinition Width="20" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Grid.Column="0" 
      Margin="5,0" 
      Text="Broadcast Name" VerticalAlignment="Center" Foreground="{DynamicResource TextLight}" /> 
     <TextBlock Grid.Column="1" 
      Margin="5,0" 
      Text="Original Duration" VerticalAlignment="Center" Foreground="{DynamicResource TextLight}" /> 
     <TextBlock Grid.Column="2" 
      Margin="5,0" 
      Text="Repeat" VerticalAlignment="Center" Foreground="{DynamicResource TextLight}" /> 
     <TextBlock Grid.Column="3" 
      Margin="5,0" 
      Text="Total Duration" VerticalAlignment="Center" Foreground="{DynamicResource TextLight}" /> 
    </Grid> 

    <ScrollViewer Grid.Row="3" 
     VerticalScrollBarVisibility="Auto"> 
     <ItemsControl x:Name="Items" 
      Margin="0" Background="{DynamicResource VeryDarkGradientIndented}" /> 
    </ScrollViewer> 
    <StackPanel Grid.Row="4" 
     Orientation="Horizontal" Background="{DynamicResource BackgroundGrey}"> 
     <TextBlock VerticalAlignment="Center" Margin="6,0,0,0" Foreground="{DynamicResource TextLight}"><Run Text="Genera"/><Run Text="t"/><Run Text="ed Playlist Ordering:"/></TextBlock> 
     <RadioButton Content="Repeated" 
      GroupName="GenerationAlgorithm" 
      IsChecked="{Binding GenerationAlgorithm, ConverterParameter={x:Static playlistGenerationWizard:GenerationAlgorithm.InPlace}, Converter={converters:EnumToBooleanConverter}}" 
      ToolTip="The playlist will be generated without changing the original order." VerticalAlignment="Center" Margin="6,0" /> 
     <RadioButton Content="Evenly Distributed" 
      GroupName="GenerationAlgorithm" 
      IsChecked="{Binding GenerationAlgorithm, ConverterParameter={x:Static playlistGenerationWizard:GenerationAlgorithm.EvenlyDistributed}, Converter={converters:EnumToBooleanConverter}}" 
      ToolTip="The playlist will be generated by evenly distributing each item. Where possible, no broadcasts will play back to back." VerticalAlignment="Center" Padding="0" Margin="6,0" Cursor="" /> 

     <RadioButton Content="Random" 
      GroupName="GenerationAlgorithm" 
      IsChecked="{Binding GenerationAlgorithm, ConverterParameter={x:Static playlistGenerationWizard:GenerationAlgorithm.Random}, Converter={converters:EnumToBooleanConverter}}" 
      ToolTip="The playlist will be generated in a completely random order with no guarantees about back to back play." VerticalAlignment="Center" Margin="6,0" /> 
    </StackPanel> 
    <DockPanel Margin="0" Grid.Row="5" Background="{DynamicResource TransparentWhite}"> 
     <TextBlock 
      Text="{Binding TotalDuration, StringFormat='Total Duration: \{0\} '}" HorizontalAlignment="Left" Width="300" Height="42" d:LayoutOverrides="LeftPosition, RightPosition" Margin="6,0,0,0" /> 
     <TextBlock 
      Text="{Binding TotalItems, StringFormat='Items: \{0\} '}" Height="42" Margin="0,0,6,0" Width="300" DockPanel.Dock="Right" HorizontalAlignment="Right" FlowDirection="RightToLeft" ToolTip="Original number of items to duplicate" /> 
    </DockPanel> 
</Grid> 

+0

이 사용자 정의 컨트롤 인스턴스의 상위 컨테이너 코드를 게시 하시겠습니까? –

답변

0

바인딩보십시오 ScrollViewerHeight 부모 ActualHeight합니다. 예 :

<ScrollViewer Grid.Row="3" 
       Height={Binding ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}} 
       VerticalScrollBarVisibility="Auto"> 
    <ItemsControl x:Name="Items" Margin="0" Background="{DynamicResource VeryDarkGradientIndented}" /> 
</ScrollViewer> 

편집 : 실제로는보기에 여러 개의 컨트롤이있는 경우 사용자에게 적합하지 않을 수 있습니다.

Height 해당 RowDefinition"*"으로 설정 했습니까?

<RowDefinition Height="*" /> 
관련 문제