Przycisk rozszerzenia po prawej stronie: jak to zrobić?
Chcę ustawić przycisk Expander po prawej stronie etykiety. Jak to zrobić?
Przycisk rozszerzenia po prawej stronie: jak to zrobić?
Chcę ustawić przycisk Expander po prawej stronie etykiety. Jak to zrobić?
Musisz zmienić styl szablonu kontrolki. Oto przykład: http://patconroy.wordpress.com/2008/12/18/restyling-the-wpf-expander-control/
Można także ustawić wartość FlowDirection
na RightToLeft
, ale może to spowodować inne problemy. Na przykład zmienia również kierunek przepływu dla zawartości ekspandera, więc może być konieczne ponowne ustawienie przepływu.
<Expander FlowDirection="RightToLeft">
<StackPanel FlowDirection="LeftToRight">
</StackPanel>
</Expander>
Innym sposobem podejścia jest umieszczenie ekspandera w wybranym miejscu, bez nagłówka lub zawartości w ekspanderze. Następnie połącz widoczność swojej kontroli treści z właściwościami ekspanderów IsExpanded
, używając BooleanToVisibilityConverter.
<StackPanel>
<StackPanel.Resources>
<BooleanToVisibilityConverter x:Key="boolToVisibility" />
</StackPanel.Resources>
<DockPanel>
<Expander DockPanel.Dock="Right" x:Name="rightAlignedExpander" />
<TextBlock Text="Expanders header" VerticalAlignment="Center" />
</DockPanel>
<Grid Visibility="{Binding IsExpanded, ElementName=rightAlignedExpander, Converter={StaticResource boolToVisibility}}">
<TextBlock Text="Expanders content"/>
</Grid>
</StackPanel>
Wadą tego rozwiązania jest to, że nie rozszerza się po kliknięciu nagłówka, ale można go w razie potrzeby łatwo wdrożyć.
Osobiście uważam, że jest to prostsze i bardziej bezpośrednie, zamiast całkowicie zmienić szablon kontrolki. Dodatkową zaletą jest to, że zachowa on wszystkie style już zastosowane w ekspanderze, na przykład podczas korzystania z takich tematów, jak DevExpress lub Telerik.
dziękuję, niezły – Sender
@ user108: Jeśli to odpowie na twoje pytanie, powinieneś oznaczyć je jako zaakceptowane. –