0

コンポーネントに問題がありDockPanelます。パネルのサイズを変更するときに、水平線ScrollBarを表示したくないのですが、代わりに、一部のコンテンツを失うことを犠牲にして、左側のコンテンツのサイズを変更したいと思います。私が実際に達成したいのはDockPanel、水平スクロールバーを使用して表示することを避け、の正しいコンテンツが常に表示されることです。私が明確だったことを願っています!これはコードです:(このdataTemplateはリストビュー内に入ります)

<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>

サイズ変更の臨界点の前 サイズ変更の重要なポイントの前 :樹脂の臨界点の後:

樹脂の臨界点の後 エキスパンダーの矢印を非表示にするのではなく、強調表示されたテキストをトリミングする必要があります。これは常に右側にある必要があります。ありがとうございました!

4

2 に答える 2

1

おそらく、DockPanelの代わりにグリッドを使用する必要があります。DockPanelは非常に高速なグリッドであり、グリッドを使用するとはるかに自由になります。

4つの列を使用します。それぞれauto、* auto、auto。次に、列がListViewに並んでいることを確認するには、IsSharedSizeScopeプロパティを追加します。http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.issharedsizescope.aspx

2番目の列の幅が*に設定されているため、グリッドは、幅がautoに設定されている列の代わりにそのサイズを変更します。または、他の列を設定されたサイズに設定することもできます。

于 2012-01-02T14:40:14.777 に答える
0

解決しました!秘訣はScrollViewer.HorizontalScrollBarVisibility="Disabled"、リストビューのXAML定義を挿入することです

于 2012-01-14T16:25:11.063 に答える