2012-01-02 175 views
0

我對DockPanel組件有問題。當我調整面板的大小時,我不想水平方向出現ScrollBar,但是我想要調整左側內容的大小以減少某些內容。實際上,我想實現的是DockPanel的正確內容始終可見,避免使用水平滾動條來顯示它。 希望我很清楚! 這是代碼:(此DataTemplate中去列表視圖中)DockPanel尺寸問題

<DataTemplate DataType="{x:Type src:Voce}" x:Name="templateVoce"> 
     <StackPanel Name="stackPanelVoce" MaxWidth="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualWidth}"> 
       <DockPanel> 
        <TextBlock Name="labelCodiceVoce" ToolTip="{Binding Path=Voce.Voce}" Text="{Binding Path=Voce.Id}" Width="40" /> 
        <TextBlock Name="labelDescrizioneVoce" ToolTip="{Binding Path=Voce.Voce}" Text="{Binding Path=Voce.Voce}" TextTrimming="CharacterEllipsis" Width="500" /> 
        <TextBlock Name="labelDescrizioneNature" ToolTip="{Binding Path=Voce.Voce}" Text="{Binding Path=ListaNature, Converter={StaticResource listaNatureConverter}}"/> 
        <Expander Name="expander1" Expanded="expander1_Expanded" Collapsed="expander1_Collapsed" DockPanel.Dock="Right" Width="25" /> 
        <TextBox Name="txtValoreVoce" PreviewKeyDown="txtValoreVoce_PreviewKeyDown" TabIndex="1" IsTabStop="False" GotFocus="txtValoreVoce_GotFocus" PreviewTextInput="txtValoreVoce_PreviewTextInput_1" AllowDrop="False" Loaded="txtValoreVoce_Loaded" IsEnabled="{Binding Path=DataContext.VMPadre.IsModifica, RelativeSource={RelativeSource FindAncestor, AncestorType=src:InserimentoVoci, AncestorLevel=1}}" DockPanel.Dock="Right" Width="70" HorizontalAlignment="Right"> 
         <TextBox.Style> 
          <Style> 
           <Setter Property="TextBox.Text" Value="{Binding Path=Valore, StringFormat=N0}" /> 
           <Style.Triggers> 
            <Trigger Property="TextBox.IsKeyboardFocusWithin" Value="True"> 
             <Setter Property="TextBox.Text" Value="{Binding Path=Valore, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" /> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </TextBox.Style> 
         <TextBox.InputBindings> 
          <!--Disable Paste--> 
          <KeyBinding Command="ApplicationCommands.NotACommand" 
         Key="V" 
         Modifiers="Control" /> 
         </TextBox.InputBindings> 
         <TextBox.ContextMenu> 
          <ContextMenu IsEnabled="False" Visibility="Hidden" /> 
         </TextBox.ContextMenu> 
        </TextBox> 
        <TextBlock Name="lblPiuMeno" Margin="0,-5,0,0" VerticalAlignment="Center" FontSize="16" HorizontalAlignment="Right" DockPanel.Dock="Right" /> 
        <Image Name="imgMulti" Source="/ClientConfidi;component/Immagini/112_Plus_Orange.ico" Margin="1" Visibility="Collapsed" ToolTip="La voce presenta nature opzionali" DockPanel.Dock="Right" HorizontalAlignment="Right" /> 
        <Image Name="imgWarning" Source="/ClientConfidi;component/Immagini/Annotate_Warning.ico" Margin="1" Visibility="Collapsed" DockPanel.Dock="Right" HorizontalAlignment="Right" /> 
       </DockPanel> 
       <ContentControl Name="controlExpander" IsEnabled="{Binding Path=DataContext.VMPadre.IsModifica, RelativeSource={RelativeSource FindAncestor, AncestorType=src:InserimentoVoci, AncestorLevel=1}}"/> 
     </StackPanel> 

之前調整的臨界點: before the critical point of resizing resing的臨界點之後:

after the critical point of resing 我要亮顯的文字修剪而不是隱藏擴展箭頭,必須始終保持在右側。 謝謝!

回答

0

已解決!訣竅是ScrollViewer.HorizontalScrollBarVisibility="Disabled"在列表視圖的XAML定義

1

你應該使用Grid而不是DockPanel。一個DockPanel幾乎是一個快速的網格,並且你通過一個網格獲得更多的自由。

我會使用四列; auto,* auto和auto。 然後,爲了確保列在ListView中排列,請添加IsSharedSizeScope屬性。 http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.issharedsizescope.aspx

因爲第二列的寬度設置爲*,網格將調整寬度而不是寬度設置爲自動的列。您也可以將其他列設置爲設定的大小。

+0

它不工作......也許我不知道在哪裏添加IsSharedSizeScope屬性。結構如下:'DataTemplate>' – 2012-01-05 09:42:11

+0

Grid.IsSharedSizeScope =「true」應該放在ListBox元素中。然後你將不得不命名你的ColumnDefinitions,例如 AkselK 2012-01-06 08:54:04

+0

對不起,但在這些日子裏我不能嘗試你的代碼,直到今天。我將SharedSizeScope添加到列表視圖,但添加SharedSizeGroup將導致一個行爲,其中的內容不會調整大小的列表視圖的大小... – 2012-01-12 13:28:04