2012-09-21 77 views
1

我有佈局問題。wpf treeview佈局

在初始窗口,一切都如預期。

Initial window

當父母或子女的項目之一被點擊,一切都右對齊。我不希望出現這種情況。下面是截圖:

Parent item is clicked

Child item is clicked

任何人可以幫助我嗎?

XAML佈局模板:

'文字塊' 風格

<Style x:Key="textBlock" TargetType="{x:Type TextBlock}"> 

      <Setter Property="FontFamily" Value="Verdana"></Setter> 
      <Setter Property="FontSize" Value="12"></Setter> 
     </Style> 

項目佈局:

<HierarchicalDataTemplate 
         DataType="{x:Type models:EntityViewModel}" ItemsSource="{Binding Children}" > 
         <Grid Margin="0,0,3,0"> 
          <TextBlock Style="{StaticResource textBlock}" TextWrapping="Wrap" Width="{Binding ActualWidth, ElementName=EntityTree}"> 
           <Hyperlink NavigateUri="{Binding Url}" RequestNavigate="Hyperlink_RequestNavigate"> 
            <TextBlock Text="{Binding ID}"></TextBlock> 
           </Hyperlink> 
           <TextBlock Text="{Binding TypeName}"></TextBlock> 
           <TextBlock Text="{Binding Explanation}"></TextBlock> 
          </TextBlock> 
         </Grid> 
        </HierarchicalDataTemplate> 

父佈局:

<HierarchicalDataTemplate 
        DataType="{x:Type models:ParentViewModel}" ItemsSource="{Binding Children}"> 
        <Grid Margin="0,0,3,0"> 
        <TextBlock Style="{StaticResource textBlock}" TextWrapping="Wrap" Width="{Binding ActualWidth, ElementName=EntityTree}" > 
          <TextBlock Text="{Binding ParentName}"/> 
          <Run Text=" kategorisinde toplam "></Run> 
          <TextBlock Text="{Binding ItemsCount}"></TextBlock> 
          <Run Text=" adet kayıt"></Run> 
         </TextBlock> 
         </Grid> 
       </HierarchicalDataTemplate> 
+2

可能這也是由於EntityViewModel DataTemplate中TextBlock寬度的Binding。我假設,EntityTree是整個TreeView的名稱。您強制TextBlock的寬度比整個TreeView大,因爲它在第二級縮進,這將導致TreeView嘗試使整個Textblock可見並強制滾動到右側。嘗試在第一種方法中設置固定寬度,該寬度小於或等於可用寬度。 – JanW

+0

謝謝你的出色解釋。這似乎是合理的。通過刪除寬度屬性,正確的對齊問題已解決。 –

+0

謝謝你。如果你喜歡,你也可以將它標記爲答案,我將它發佈爲答案。 – JanW

回答

1

也許這也是由於EntityViewModel DataTemplate中TextBlock寬度的綁定造成的。我假設,EntityTree是整個TreeView的名稱。您強制TextBlock的寬度比整個TreeView大,因爲它在第二級縮進,這將導致TreeView嘗試使整個Textblock可見並強制滾動到右側。嘗試在第一種方法中設置固定寬度,該寬度小於或等於可用寬度