Jak umieścić obramowanie na mojej siatce w C # / WPF?
Tak właśnie chciałbym, ale umieszcza obramowanie wokół całej rzeczy zamiast kontroli siatki, którą umieściłem w mojej aplikacji.
<Grid>
<Border BorderBrush="Black" BorderThickness="2">
<Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" />
</Border>
... and so on ...
Odpowiedzi:
Jeśli potrzebujesz tylko zewnętrznej granicy, najłatwiej jest umieścić ją w kontroli granicznej:
Powodem, dla którego widzisz obramowanie całkowicie wypełniające twoją kontrolkę, jest to, że domyślnie jest to ustawienie HorizontalAlignment i VerticalAlignment na Stretch. Spróbuj wykonać następujące czynności:
To powinno dać ci to, czego szukasz (chociaż możesz chcieć umieścić margines ze wszystkich 4 stron, a nie tylko 2 ...)
źródło
Jeśli zagnieżdżasz siatkę w kontroli granicznej
nie robi tego, co chcesz, będziesz musiał stworzyć własny szablon kontrolny dla siatki (lub obramowania), która ROBI to, co chcesz.
źródło
Myślę, że twój problem polega na tym, że margines powinien być określony w znaczniku obramowania, a nie w siatce.
źródło
To jest późniejsza odpowiedź, która mi pasuje, jeśli może się przydać komukolwiek w przyszłości. Chciałem mieć prostą ramkę wokół wszystkich czterech stron siatki i tak to osiągnąłem ...
źródło
Grid
Kontrola nie posiadaBorderBrush
atrybut, aleDataGrid
nie ...Ten kod Zawiń obramowanie wewnątrz elementu „innerGrid”
źródło
Jeśli kogoś interesuje podobny problem, ale nie pracuje z XAML, oto moje rozwiązanie:
źródło