2017-04-26 4 views
0

ScrollViewer이 창에서 유일한 요소가 아닌 경우 올바르게 작동하는 데 문제가 있습니다. 항목 목록 (ItemsSource으로 설정된 목록)을 스크롤하면서 다른 창을 내 창에 표시하려고합니다. 이제 다른 요소에 상대적으로 height을 설정하는 방법을 모르겠습니다. 그게 유효한 접근법인가요 아니면 완전히 잘못 했나요? 나는 거의 삼시간하지만 난 찾을 수있는 유일한 솔루션 검색 Wpf에서 ScrollViewer를 구현하는 동적 방법은 무엇입니까

<Window x:Class="FactorioWpf.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:FactorioWpf" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525" 
    Closing="Window_Closing"> 

<StackPanel> 

    <Menu> 
     <MenuItem Header="Items"> 
      <MenuItem Header="Add" Click="ItemsAdd_Click" /> 
     </MenuItem> 
    </Menu> 

    <Grid> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 

     <ScrollViewer Grid.Column="0"> 
      <ItemsControl Name="ItemViewerItemsControl"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding Name}" /> 
         </StackPanel> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </ScrollViewer> 

    </Grid> 
</StackPanel> 

는 상위 요소로 스크롤 뷰어를 설정했다.

+0

먼저 RowDefinition이없는 표를 사용하고 있습니다. 그게 의도 된거야? StackPanel을 사용해 보셨습니까? RowDefinition? DockPanel? 목록보기? –

답변

0

StackPanel에서는 작동하지 않습니다. StackPanel은 내용에 따라 커집니다. 실제로 스택 패널에서도 작동하지만 ScrollViewer의 높이를 정의해야합니다. 행 정의와 함께 그리드를 사용하십시오.

<Window x:Class="WpfApplication3.MainWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:local="clr-namespace:WpfApplication3" 
      mc:Ignorable="d" Height="350" Width="525" > 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 

      <Menu Grid.Row="0"> 
       <MenuItem Header="Items"> 
        <MenuItem Header="Add" Click="MenuItem_OnClick" /> 
       </MenuItem> 
      </Menu> 

      <Grid Grid.Row="1"> 

       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="*"/> 
       </Grid.ColumnDefinitions> 
       <ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Column="0"> 
        <ItemsControl Name="ItemViewerItemsControl"> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <StackPanel> 
            <TextBlock Text="{Binding Name}" /> 
           </StackPanel> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
       </ScrollViewer> 
      </Grid> 
     </Grid> 
    </Window> 
+0

작품 괴롭히다, 정말 고마워. 절대로 StackPanel을 사용하지 말라. – R3dSparks

관련 문제