Saya ingin menambahkan Pemisah vertikal ke Grid, tetapi saya hanya dapat menemukan horizontal. Apakah tidak ada Properti, di mana Anda bisa masuk jika garis pemisah harus horizontal atau vertikal?
Saya banyak mencari, tetapi tidak menemukan solusi yang singkat dan mudah untuk ini.
Saya menggunakan .Net Framework 4.0 dan Visual Studio Ultimate 2012.
Jika saya mencoba memutar Pemisah horizontal sebesar 90 derajat, ia kehilangan kemampuan untuk "berlabuh" ke Komponen lain.
Pemisah yang diputar terlihat seperti ini:
<Separator HorizontalAlignment="Left" Height="100" Margin="264,26,0,0" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.5,0.5">
<Separator.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</Separator.RenderTransform>
</Separator>
wpf
xaml
visual-studio-2012
separator
Martin Weber
sumber
sumber
Rectangle
?Border
juga bisa menjadi solusi ..Jawaban:
Ini harus melakukan apa yang diinginkan penulis:
jika Anda menginginkan pemisah horizontal, ubah
Orientation
dariStackPanel
menjadiVertical
.sumber
RenderTransform
. Pintasan rapi untuk diingat :)Menu
antaraMenuItem
s juga. Selalu melakukan peregangan yang bagus agar sesuai dengan tinggi / lebar menu.Ini tidak persis seperti yang diminta penulis, tetapi tetap saja, ini sangat sederhana dan bekerja persis seperti yang diharapkan.
Persegi panjang melakukan pekerjaan:
sumber
<Rectangle HorizontalAlignment="Stretch" Height="3" Margin="-1,6" Stroke="Black" Fill="White" />
Di masa lalu saya menggunakan gaya yang ditemukan di sini
Anda perlu menyetel transformasi ke dalam
LayoutTransform
alih-alihRenderTransform
agar transformasi terjadi selama Pass Layout, bukan selama Render pass. Pass Layout terjadi ketika WPF mencoba mengatur tata letak dan mencari tahu berapa banyak ruang yang dibutuhkan setiap kontrol, sedangkan Render pass terjadi setelah tata letak berlalu ketika WPF mencoba merender kontrol.Anda dapat membaca lebih lanjut tentang perbedaan antara
LayoutTransform
dan diRenderTransform
sini atau di sinisumber
DockPanel
, Anda harus dapat mengaturDockPanel.Dock
pada AndaSeparator
ke samping apa pun yang Anda inginkan merapat ke. Dengan WPF, panel yang menghosting kontrol biasanya menentukan posisi kontrol dan terkadang bahkan ukuran default. Jika Anda baru mengenal tata letak WPF, saya akan merekomendasikan membaca artikel ini: Tata Letak WPF - Mulai Cepat VisualSaya suka menggunakan kontrol "Line". Ini memberi Anda kontrol yang tepat atas di mana pemisah dimulai dan diakhiri. Meskipun bukan pemisah, fungsinya sama, terutama di StackPanel.
Kontrol garis juga berfungsi dalam kisi. Saya lebih suka menggunakan StackPanel karena Anda tidak perlu khawatir tentang berbagai kontrol yang tumpang tindih.
X1 = x posisi awal (harus 0 untuk garis vertikal)
X2 = x posisi akhir (X1 = X2 untuk garis vertikal)
Y1 = y posisi awal (harus 0 untuk garis vertikal)
Y2 = y posisi akhir (Y2 = tinggi garis yang diinginkan)
Saya menggunakan "margin" untuk menambahkan padding di setiap sisi garis vertikal. Dalam contoh ini, ada 5 piksel di kiri dan 10 piksel di kanan garis vertikal.
Karena kontrol garis memungkinkan Anda memilih koordinat x dan y dari awal dan akhir garis, Anda juga dapat menggunakannya untuk garis horizontal dan garis pada setiap sudut di antaranya.
sumber
Ini adalah cara yang sangat sederhana untuk melakukannya tanpa fungsionalitas dan semua efek visual,
Gunakan kisi dan sesuaikan saja.
Hanya cara lain untuk melakukannya.
sumber
<Grid HorizontalAlignment="Stretch" Height="1" Margin="0,10" Background="Black"/>
Pemisah vertikal
pemisah horizontal
sumber
Dari http://social.msdn.microsoft.com/Forums/vstudio/en-US/12ead5d4-1d57-4dbb-ba81-bc13084ba370/how-can-i-add-a-line-as-a-visual-separator -to-the-content-control-like-grid? forum = wpf :
Coba contoh ini dan lihat apakah itu sesuai dengan kebutuhan Anda, ada tiga aspek utamanya.
Line.Stretch diatur untuk mengisi.
Untuk garis horizontal VerticalAlignment garis disetel ke Bawah, dan untuk Garis Vertikal HorizontalAlignment disetel ke Kanan.
Kita kemudian perlu memberi tahu baris berapa banyak baris atau kolom untuk direntangkan, ini dilakukan dengan mengikat ke properti penghitungan RowDefinitions atau ColumnDefintions.
sumber
menggunakan
sumber
Inilah cara saya melakukannya:
sumber