2011-08-29 36 views
29

Giao diện của Hộp kiểm WPF điều chỉnh phần kiểm tra bằng phần nhãn (nội dung). Vui lòng cung vẫn cao hơn một chút nội dung như trình bày ở đây:Tôi làm cách nào để căn chỉnh Hộp kiểm với nội dung của nó?

enter image description here

Các XAML trông như thế này:

<CheckBox Content="Poorly aligned CheckBox" Margin="9"/> 

các CheckBox là bên trong một tế bào Grid. Có cách nào đơn giản để tạo nội dung và kiểm tra các phần của Hộp kiểm XAML căn chỉnh theo chiều dọc không? Tôi đã thử kết hợp các thuộc tính khác nhau mà không có may mắn. Tôi thấy a similar question here nhưng câu trả lời là quá phức tạp.

Xin cảm ơn trước.

CHỈNH SỬA: Vấn đề là do Window FontSize mà tôi đặt thành 14. Để tạo lại vấn đề, hãy đặt CheckBox FontSize thành 14 (hoặc nhiều hơn). Chương trình của tôi được xem xét ở khoảng cách bởi các công nhân nhà máy vì vậy tôi cho phép Window FontSize tăng hoặc giảm bởi người dùng.

+0

Nếu bạn nghĩ rằng việc chỉnh sửa các mẫu kiểm soát là cách quá phức tạp, sau đó bạn sẽ phải chấp nhận con đường sự kiểm soát tiêu chuẩn mẫu được đặt ra. * Thay đổi * thực tế bạn cần thực hiện đối với mẫu điều khiển, giống như thay đổi được thực hiện trong câu trả lời bạn đã liên kết, rất đơn giản. –

+0

Thẻ ** [không] (http://meta.stackexchange.com/questions/70498/automatic-removal-of-bracketed-tags-from-question-titles) ** thuộc vào tiêu đề, mọi người thậm chí là từ xa quen thuộc với các trang web biết điều này, nếu câu hỏi được gắn thẻ như WPF mọi người đều biết rằng bạn không nói về một hộp kiểm WinForms hoặc HTML. Thẻ WPF thậm chí còn được tự động thêm vào tiêu đề trang. –

+0

Bạn có thể thêm tôi vào danh sách những người không thể tái tạo sự cố của bạn. XAML của bạn mang lại một hộp kiểm tìm kiếm bình thường, không có sự cố bố cục bạn hiển thị trong ảnh chụp màn hình của mình. Bạn có thể tái tạo vấn đề của mình trong một ứng dụng thử nghiệm độc lập không? –

Trả lời

21

Edit - New trả lời: (trước đây là không tốt)

Không phải là cách tốt nhất tôi tin, nhưng có thể làm việc:

<CheckBox> 
    <TextBlock Text="Poorly aligned CheckBox" Margin="0,-2,0,0"/> 
</CheckBox> 

Sử dụng lợi nhuận tiêu cực để đẩy nội dung lên, kết quả: enter image description here

+0

Điều này không làm gì cả. –

+0

@ H.B xin lỗi, chỉnh sửa nó .. – MichaelS

+0

Tất cả các sắp xếp và contentcontrol là dư thừa, vì vậy tôi loại bỏ chúng ... –

14

Kiểu mặc định là CheckBox không giống như trong WPF. Nó sắp xếp hoàn hảo trong cả XP và Windows 7. Bạn có thể mô tả tốt hơn về cách tái tạo vấn đề này không?

Hai điều tôi có thể nghĩ để nhận được khoản bù mà bạn đang xem là thay đổi Padding hoặc VerticalContentAlignment. Giá trị CheckBox mặc định cho VerticalContentAlignmentTopCheckBox với ContentPadding được đặt thành "4,0,0,0". Cố gắng thay đổi hai cái này và xem nó có tạo nên sự khác biệt nào không.

Dưới đây là một so sánh

enter image description here

Từ sau XAML

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <CheckBox Grid.Row="0" 
       Content="Poorly aligned CheckBox" Margin="9" /> 
    <CheckBox Grid.Row="1" 
       Content="Padding=4,4,0,0" Margin="9" Padding="4,4,0,0"/> 
    <CheckBox Grid.Row="2" 
       Content="Vertical Center" Margin="9" 
       VerticalContentAlignment="Center"/> 
    <CheckBox Grid.Row="3" 
       Content="Vertical Top" Margin="9" 
       VerticalContentAlignment="Top"/> 
</Grid> 
+0

Đặt Padding = "4, -2, 0, 0" là một sửa chữa hợp lý cho bây giờ. Cảm ơn. – DeveloperDan

+1

Tôi đã thử rằng một đến sau khi tôi nhìn thấy bình luận của bạn về 'Window' có' FontSize = "14" ':) –

+1

Thấy phản ứng của bạn, thêm margin vào hộp kiểm của tôi dường như giải quyết nó cho tôi. –

0

hộp kiểm My được liên kết tốt, vì vậy tôi tự hỏi có gì khác nhau về bạn. Sự khác biệt rõ ràng duy nhất là bạn đang sử dụng một phông chữ lớn hơn tôi, mà tôi nhớ đến những câu dưới đây:

WPF CheckBox style with the TextWrapping

Vấn đề của bạn có thể là nếu nội dung là một TextBlock, hộp kiểm là trên lý , có thể trông kỳ lạ khi kích thước phông chữ được tăng lên.Vì vậy, tôi đoán là, hãy thử sử dụng AccessText làm Nội dung của Hộp kiểm thay thế:

<CheckBox Margin="9"><AccessText>Better aligned CheckBox?</AccessText></CheckBox> 
+0

Cảm ơn bạn. Câu trả lời của bạn đã chỉ cho tôi nguyên nhân của sự cố - Window FontSize = "14". Tôi đã thử AccessText nhưng điều đó không khắc phục được. Tôi có lẽ sẽ sử dụng câu trả lời của MichaelS về việc cung cấp cho nội dung một Margin hàng đầu tiêu cực. – DeveloperDan

2

Đặt Hộp kiểm trống và nội dung dưới dạng điều khiển riêng trong StackPanel theo hướng nằm ngang. Điều này làm việc với bất kỳ kích thước phông chữ nào.

<StackPanel Orientation="Horizontal"> 
    <CheckBox VerticalAlignment="Center" /> 
    <TextBlock VerticalAlignment="Center" Text="Option X" /> 
</StackPanel /> 
+6

Nếu bạn làm điều đó như thế này nhấp vào TextBlock sẽ không chuyển đổi CheckBox. Bạn cần phải đặt nó trong Nội dung của CheckBox cho hành vi đó. – Wouter

35

Tôi biết đã quá muộn, nhưng đây là giải pháp tốt hơn, không cần đặt lề. Lề phải được đặt khác nhau cho các độ cao khác nhau của TextBlock hoặc Checkbox.

<CheckBox VerticalAlignment="Center" VerticalContentAlignment="Center"> 
    <TextBlock Text="Well aligned Checkbox" VerticalAlignment="Center" /> 
</CheckBox> 
+8

Tôi thấy rằng việc xác định thuộc tính 'VerticalContentAlignment =" Center "' là đủ. Nhỏ gọn hơn: '' hoạt động cho tôi – nmarler

+0

Đây là câu trả lời hay nhất – DdW

1

Áp dụng trên đệm tiêu cực làm việc tốt cho bố trí của tôi:

<CheckBox Content="Poorly aligned CheckBox" Padding="4,-3,0,0" Margin="9"/> 
Các vấn đề liên quan