Chcę dodać separator pionowy do siatki, ale mogę znaleźć tylko poziomą. Czy nie ma właściwości, w której można wpisać, czy linia separatora ma być pozioma czy pionowa?
Szukałem dużo, ale nie znalazłem na to krótkiego i łatwego rozwiązania.
Używam .Net Framework 4.0 i Visual Studio Ultimate 2012.
Jeśli spróbuję obrócić poziomy separator o 90 stopni, traci on możliwość „zadokowania” do innych komponentów.
Obrócony separator wygląda następująco:
<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
źródło
źródło
Rectangle
?Border
może być również rozwiązaniem ...Odpowiedzi:
Powinno to zrobić dokładnie to, czego chciał autor:
jeśli chcesz poziomy separator, należy zmienić
Orientation
zStackPanel
celuVertical
.źródło
RenderTransform
. Zgrabny skrót do zapamiętania :)Menu
międzyMenuItem
s. Zawsze ładnie się rozciąga, aby dopasować wysokość / szerokość menu.Nie jest to dokładnie to, o co pytał autor, ale mimo to jest bardzo proste i działa dokładnie tak, jak oczekiwano.
Rectangle spełnia swoje zadanie:
źródło
<Rectangle HorizontalAlignment="Stretch" Height="3" Margin="-1,6" Stroke="Black" Fill="White" />
W przeszłości korzystałem ze znalezionego tutaj stylu
Trzeba ustawić transformację
LayoutTransform
zamiastRenderTransform
więc przemiana zachodzi podczas przejściu układu, a nie podczas przełęczy render. Przejście układu występuje, gdy WPF próbuje rozmieścić kontrolki i dowiedzieć się, ile miejsca zajmuje każda kontrolka, podczas gdy przebieg renderowania występuje po przejściu układu, gdy WPF próbuje renderować kontrolki.Możesz przeczytać więcej o różnicy między
LayoutTransform
iRenderTransform
tutaj lub tutajźródło
DockPanel
, powinieneś być w stanie ustawićDockPanel.Dock
sięSeparator
po dowolnej stronie, na której chcesz, aby był zadokowany. W przypadku WPF panel obsługujący formant zwykle określa położenie formantu, a czasem nawet domyślny rozmiar. Jeśli jesteś nowy w układach WPF, polecam przeczytanie tego artykułu: Układy WPF - wizualny szybki startLubię używać kontrolki „Line”. Daje ci dokładną kontrolę nad tym, gdzie zaczyna się i kończy separator. Chociaż nie jest to dokładnie separator, działa w ten sam sposób, szczególnie w StackPanel.
Kontrola linii działa również w siatce. Wolę używać StackPanel, ponieważ nie musisz się martwić o nakładanie się różnych kontrolek.
X1 = x pozycja początkowa (powinna wynosić 0 dla linii pionowej)
X2 = x pozycja końcowa (X1 = X2 dla linii pionowej)
Y1 = y pozycja początkowa (powinna wynosić 0 dla linii pionowej)
Y2 = y pozycja końcowa (Y2 = żądana wysokość wiersza)
Używam „marginesu”, aby dodać dopełnienie po dowolnej stronie pionowej linii. W tym przypadku jest 5 pikseli po lewej stronie i 10 pikseli po prawej stronie pionowej linii.
Ponieważ kontrolka linii umożliwia wybranie współrzędnych x i y początku i końca linii, można jej również użyć do linii poziomych i linii pod dowolnym kątem pomiędzy nimi.
źródło
To bardzo prosty sposób na zrobienie tego bez funkcjonalności i wszystkich efektów wizualnych,
Użyj siatki i po prostu ją dostosuj.
Po prostu inny sposób, aby to zrobić.
źródło
<Grid HorizontalAlignment="Stretch" Height="1" Margin="0,10" Background="Black"/>
Separator pionowy
separator poziomy
źródło
Od 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 :
Wypróbuj ten przykład i sprawdź, czy odpowiada Twoim potrzebom, są trzy główne aspekty.
Line.Stretch jest ustawione na wypełnienie.
W przypadku linii poziomych VerticalAlignment linii jest ustawiane jako Bottom, a dla VerticalLines ustawienie HorizontalAlignment na Right.
Następnie musimy powiedzieć linii, ile wierszy lub kolumn ma obejmować, odbywa się to przez powiązanie z właściwością RowDefinitions lub ColumnDefintions count.
źródło
posługiwać się
źródło
Oto jak to zrobiłem:
źródło