wpf TextBox soll einen Listview horizontal ausfüllen

29/03/2009 - 14:08 von Winfried Wille | Report spam
Hallo,

hier der Code:
<DockPanel Name="dpContent">
<ListBox Name="lbContent" Visibility="Visible"
DockPanel.Dock="Left"
Background="#FF808080" ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True" Width="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Name}"
IsHitTestVisible="False" Background="#00FFFFFF"
HorizontalAlignment="Stretch">
</TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox >
<TabControl Name="tcItems">
...
Obwohl ich der TextBox ein HorizontalAlignment von "Stretch" gebe, füllt
Sie die eine Spalte vom Listview horiontal nicht aus.
Ärgerlich da die Textbox einen Rand hat und auf Klicks reagieren soll.
Weiss irgendjemand, wie ich die Textbox stretche, so das Sie horizontal die
Spalte vom Listview füllt.

Viele Grüße
Winfried Wille
 

Lesen sie die antworten

#1 Elmar Boye
29/03/2009 - 16:08 | Warnen spam
Hallo Winfried,

Winfried Wille schrieb:
Hallo,

hier der Code:
<DockPanel Name="dpContent">
<ListBox Name="lbContent" Visibility="Visible"
DockPanel.Dock="Left"
Background="#FF808080" ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True" Width="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Name}"
IsHitTestVisible="False" Background="#00FFFFFF"
HorizontalAlignment="Stretch">
</TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox >
<TabControl Name="tcItems">
...
Obwohl ich der TextBox ein HorizontalAlignment von "Stretch" gebe,
füllt Sie die eine Spalte vom Listview horiontal nicht aus.



Gib es auf der Ebene der Listbox an via
HorizontalContentAlignment="Stretch"

Ärgerlich da die Textbox einen Rand hat und auf Klicks reagieren soll.



Und wieso hast Du IsHitTestVisible deaktiviert?
Erforderlich um Änderungen mitzukriegen ist das nicht.
Die ListBox reagiert auch so auf die Auswahl mit einem
SelectionChanged Ereignis, wo Du das zugrundeliegende
Element ermitteln kannst.

Für die Anzeige selbst ist es effizienter einen TextBlock anstatt
der TextBox zu verwenden. Und wenn Du ein Ràhmchen drumherum haben
möchtest, dazu ein Border Element.

Das könnte z. B. so aussehen:

<ListBox x:Name="lbContent"
DockPanel.Dock="Left"
Background="Gray"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"

HorizontalContentAlignment="Stretch"
SelectionChanged="lbContent_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Border BorderBrush="Blue" BorderThickness=".25" Padding="2">
<TextBlock Text="{Binding Path=Name}" Background="DarkGray"/>
</Border>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>


Gruß Elmar

Ähnliche fragen