[英]How to create DataGrid Matrix from List Chars?
我在TextBox
顯示帶chars
的List
,但間距不統一。
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
如何將其綁定到WPF DataGrid
,使其顯示為統一的5x5矩陣?
還是有其他方法可以使其統一?
A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y
C#
public char A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y;
public List<char> myList = new List<char>()
{
A, B, C, D, E,
F, G, H, I, J,
K, L, M, N, O,
P, Q, R, S, T,
U, V, W, X, Y
}
public ObservableCollection<char> myCollection = new ObservableCollection<char>(myList);
XAML
<DataGrid x:Name="dataGrid"
HorizontalAlignment="Left"
Height="299"
Margin="191,399,0,0"
VerticalAlignment="Top"
Width="360"/>
除了可以使用等寬字體外,例如
<TextBlock FontFamily="Lucida Console">
<Run>ABCDE</Run>
<LineBreak/>
<Run>FGHIJ</Run>
<LineBreak/>
<Run>KLMNO</Run>
<LineBreak/>
<Run>PQRST</Run>
<LineBreak/>
<Run>UVWXY</Run>
</TextBlock>
您可以將ItemsControl與UniformGrid一起使用:
<ItemsControl ItemsSource="ABCDEFGHIJKLMNOPQRSTUVWXY">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" TextAlignment="Center"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
盡管XAML設計人員抱怨ItemsSource
屬性,但是它可以工作,因為字符串是IEnumerable,並且文本綁定自動將char
轉換為string
。
您當然也可以在后面的代碼中設置ItemsSource:
itemsControl.ItemsSource = new List<string>()
{
"A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y"
};
要么
itemsControl.ItemsSource = new List<char>()
{
'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y'
};
或當然
itemsControl.ItemsSource = "ABCDEFGHIJKLMNOPQRSTUVWXY";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.