Saat ini saya sedang mencoba membuat komponen visual untuk memiliki teks bergulir (kiri ke kanan dan kanan ke kiri) - hampir seperti tenda html.
Saya memiliki grid yang dibagi menjadi beberapa kolom & baris, dan saya ingin menempatkan komponen saya di dalam salah satu slot grid.
Grid (bernama UIGrid) dihasilkan seperti ini:
for (int i = 0; i < xDivisions; i++)
{
ColumnDefinition newColumn = new ColumnDefinition();
UIGrid.ColumnDefinitions.Add(newColumn);
}
for (int i = 0; i < yDivisions; i++)
{
RowDefinition newRow = new RowDefinition();
UIGrid.RowDefinitions.Add(newRow);
}
Komponen yang saya tambahkan hanyalah pembatas dengan blok teks saat masih anak-anak. Saya menempatkan perbatasan di dalam Grid seperti ini:
border = new Border();
Grid.SetColumn(border, xPosition);
Grid.SetRow(border, yPosition);
textBlock = new TextBlock();
border.Child = textBlock;
textBlock.Text = "Scrolling text from left to right";
UIGrid.Children.Add(border);
Saya menggunakan pengatur waktu untuk menambah margin blok teks, inilah isi panggilan balik pengatur waktu yang disederhanakan:
textBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
double textWidth = textBlock.DesiredSize.Width;
double visibleWidth = componentBase.ActualWidth;
double targetMargin = textWidth < visibleWidth ? visibleWidth : textWidth;
if (margin.Left == targetMargin)
{
margin.Left = -textWidth;
} else
{
margin.Left++;
}
Ketika teks digeser dari kiri ke kanan, teks berperilaku baik : https://s10.postimg.org/p0nt7vl09/text_good.png Teks "meninggalkan" slot kisi disembunyikan.
Namun, ketika saya mengatur margin blok teks sebagai negatif sehingga dapat kembali ke dalam area tampilan dari kiri, teks tetap terlihat meskipun berada di luar slot yang dialokasikan: https://s10.postimg.org/pownqtjq1/text_bad.png
Saya sudah mencoba menggunakan padding, tetapi saya tidak dapat menyetel padding negatif. Saya sudah mencoba beberapa hal lainnya, namun saya merasa menemui hambatan.
Apa yang bisa saya lakukan untuk mendapatkan teks bergulir dengan baik?
ClipToBounds="True"
di atasnya. Itu mungkin menyelesaikan setidaknya sebagian dari masalah Anda, meskipun sulit untuk memastikannya karena Anda sangat tertutup. - person 15ee8f99-57ff-4f92-890c-b56153   schedule 11.08.2016