2012-11-01 4 views
2

안녕하세요 여러분, 저는 솔루션에서 mvvm으로 WPF를 사용하고 있는데 문제가 있습니다. 나는 내가 뷰 모델에 사용하고이 개체가 :Expander에서 크기 조정 문제 WPF

public class SuperCharacter : INotifyPropertyChanged 
{ 
    public List<Character> Characters { get; set; } 
    public string Name { get; set; } 
    private Character charactersExp; 
    private const string currentCharacterExpandedString = "CurrentCharacterExp"; 
    public Character CurrentCharacterExpanded 
    { 
     get { return this.charactersExp; } 
     set 
     { 
      this.charactersExp = value; 
      this.OnPropertyChanged(currentCharacterExpandedString); 
     } 
    } 

    public string CalcSize { get; set; } 

    public void OnPropertyChanged(string propertyName) 
    { 


     if (this.PropertyChanged != null) 
     { 
      this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 

    } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 

을 그리고 난이보기가 : 내가 확장기를 확장 할 때 목록보기 통화 ProblemListView의 요소 아래

Window.Resources> 


    <DataTemplate x:Key="TrackPointUserSavedSearchDtoTemplate" DataType="{x:Type src:Character}"> 
     <StackPanel > 
      <TextBlock x:Name="caption" Margin="1" 
     Text="{Binding First}" MaxWidth="{Binding ElementName=image, Path=ActualWidth}" MaxHeight="40" /> 
     </StackPanel> 
    </DataTemplate> 

    <DataTemplate x:Key="DynamicUserSaveSearchesTemplate" DataType="{x:Type src:Character}"> 
     <ContentPresenter x:Name="content" ContentTemplate="{StaticResource TrackPointUserSavedSearchDtoTemplate }"/> 
    </DataTemplate> 

    <DataTemplate x:Key="IconoTrackPointUSTemplate" DataType="{x:Type src:SuperCharacter}"> 
     <ScrollViewer Grid.Row="2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
      <Expander Height="180" Margin="12,0,0,-127" > 

       <Expander.Header> 
        <Binding Path="Name"></Binding> 
       </Expander.Header>     

        <ListView Name="ProblemListView" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Characters}" SelectedItem="{Binding CurrentCharacterExpanded}" ItemTemplate="{StaticResource DynamicUserSaveSearchesTemplate}" Panel.ZIndex="20"> 
        </ListView>      
      </Expander> 
     </ScrollViewer> 
    </DataTemplate> 

    <DataTemplate x:Key="DynamicTrackPointUSTemplate" DataType="{x:Type src:SuperCharacter}" > 
     <ContentPresenter x:Name="content" ContentTemplate="{StaticResource IconoTrackPointUSTemplate }"/> 
    </DataTemplate> 
</Window.Resources> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="42"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition>   
    </Grid.RowDefinitions> 
    <Label Content="Entitty's TrackPoint list:" Margin="12,5,76,9" Name="labelName" /> 
    <ListView Grid.Row="1" ItemsSource="{Binding SuperCharacters}" SelectedItem="{Binding CurrentSuperCharacterExpanded}" ItemTemplate="{StaticResource DynamicTrackPointUSTemplate}"> 
    </ListView> 
<Grid/> 

문제가 있습니다를 다음 확장기로.

나는이 확장기 목록을 어떻게 보이게 할 수 있습니까? 익스팬더를 확장하면 problemListView가 올바르게 표시됩니다.

그냥 목록은 동적이며, 당신의 DataTemplateScrollViewer에 대한 Grid.Row="2"를 설정 생각하는 것이 훨씬 이해가되지 않습니다 요소

모든
+0

문제의 그림을 추가 할 수 있습니까? – user1834059

+0

각 확장자 안에'ScrollViewer'가 필요합니까? 아니면 그것은 외부 ListView만을위한 것입니다. – dzavala

답변

0

먼저 다른 번호를 가질 수 있음을 기억하십시오. 둘째, Expandermargin이 문제를 일으키고 있습니다. 왜 저 밑 마진 (-127)을 설정하는지 알 수 없습니다.

ScrollViewerHeight을 지정해야합니다. 그렇지 않으면 ListView이 커질수록 그리드 행이 확장됩니다.

은`IconoTrackPointUSTemplate에 이러한 변경을 시도해보십시오

Header="{Binding Name}" 
:

<DataTemplate x:Key="IconoTrackPointUSTemplate" DataType="{x:Type WpfApplication1:SuperCharacter}"> 
    <ScrollViewer Height="50" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <Expander Margin="12,0,0,0" Header="{Binding Name}"> 
      <ListView Name="ProblemListView" 
         HorizontalContentAlignment="Stretch" 
         ItemsSource="{Binding Characters}" 
         SelectedItem="{Binding CurrentCharacterExpanded}" 
         ItemTemplate="{StaticResource DynamicUserSaveSearchesTemplate}" 
         Panel.ZIndex="20" /> 
     </Expander> 
    </ScrollViewer> 
</DataTemplate> 

를 그냥 팁, 나는이 (가) 확장 헤더의 바인딩을 변경하는 방법을 참고, 당신은 인라인을하고 꽤 많은 공간을 절약 할 수 있습니다