2011-01-04 7 views
6
erscheinen

Sie mich Ihnen einen Teil meines XAML-Code Lassen Sie zeigen:meine Grenze Größe ändern, wenn ein verticalScrollBar

<ListBox Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     ScrollViewer.IsDeferredScrollingEnabled="True" 
     HorizontalAlignment="Stretch" ItemsSource="{Binding}" Margin="1,1,0,0" 
     Name="listBox_Faits" Width="290" VerticalAlignment="Stretch" 
     SelectionChanged="listBox_Faits_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderBrush="SlateGray" BorderThickness="0.5" Margin="1,2,1,1" 
        Width="{Binding ElementName=listBox_Faits, Path=Width}"> 

Wenn zu viele Grenzen geschaffen werden (es mit einem ObservableCollection verknüpft ist), eine vertikale Bildlaufleiste angezeigt wird, und mein Grenze ändert sich nicht von selbst. (Ich möchte die komplette Grenze sehen, ich will nicht, dass es am Ende geschnitten wird)

Wenn jemand eine Idee hat, danke! Zögern Sie nicht zu fragen, wenn Sie mehr Informationen benötigen!

Rgds,

Flo

Antwort

3

können Sie ListBoxItem Strecke machen dies durch Hinzufügen, und dann können Sie die Breite Bindung für das Border

<ListBox ...> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <!-- ... --> 
+0

Wow du hast Recht, es funktioniert !!! – Flo

+0

Du hast sogar ein älteres Problem gelöst !!! Vielen Dank sehr, sehr, sehr! Grüße, Flo – Flo

+0

@Flo: Kein Problem :) Zwei in eins dann, super! –

0

Das Problem ist, dass Sie die Breite des Rahmens festlegen. Dies bedeutet, dass es sich um eine feste Größe handelt, auch wenn die sichtbare Größe kleiner ist als die Größe des Listenelements. Wenn Sie Border.Width nicht festlegen, wird die Größe so angepasst, dass sie in die Bildlaufleiste passt.

+0

Hum entfernen, wenn ich keine Größe festgelegt, jede Grenze haben eine andere Größe: es dauert die Größe des längsten Satzes darin. Ich weiß nicht, wie man die Grenze perfekt in die Listbox einfügt, ohne an die Größe des Inhalts zu denken. Ich dachte, es wäre HorizontalAlignement = "Stretch", aber es funktioniert nicht. – Flo