2012-01-07 24 views

Trả lời

19

Bạn cũng có thể đặt FlowDirection thành RightToLeft, nhưng điều đó có thể gây ra các sự cố khác. Ví dụ, nó cũng thay đổi hướng dòng chảy cho nội dung của expander, do đó bạn có thể cần phải thiết lập nó trở lại.

<Expander FlowDirection="RightToLeft"> 
    <StackPanel FlowDirection="LeftToRight"> 
    </StackPanel> 
</Expander> 
0

Một cách khác để tiếp cận điều này là định vị trình mở rộng nơi bạn thích, không có bất kỳ đầu trang hoặc nội dung nào trong chính trình mở rộng đó. Sau đó, ràng buộc khả năng hiển thị của kiểm soát nội dung của bạn đối với người mở rộng IsExpanded thuộc tính, sử dụng 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> 

Nhược điểm là nó sẽ không mở rộng khi tiêu đề được nhấp nhưng có thể dễ dàng triển khai nếu cần.
Cá nhân tôi nghĩ điều này đơn giản hơn và dễ hiểu hơn thay vì hoàn toàn thiết kế lại mẫu của kiểm soát. Nó cũng có lợi ích bổ sung là nó sẽ giữ bất kỳ kiểu nào đã được áp dụng cho trình giãn nở, ví dụ khi sử dụng các chủ đề của bên thứ 3 như DevExpress hoặc Telerik.

Các vấn đề liên quan