在我的WPF桌面應用程序中,我有一個ListBox,我想用兩行和兩列(即2x2網格)顯示,並在四行/列中的每一箇中都帶有複選框 - 我的XAML代碼位於下方。請注意,我不想執行任何數據綁定。下面的代碼可以工作,但是顯示的是所有四個CheckBox都是正確的,即使我已經指定它們應該在不同的行/列中。有人能指出我做錯了什麼,以及如何糾正XAML?我在互聯網上找到的每個例子都是一個數據綁定的例子,這需要沒有數據綁定(即明確的)。如何將複選框放在WPF中ListBox的不同行/列中?
<ListBox Margin="0,0,10,10" Name="myListBox" Height="139" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="112" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<CheckBox Content="WCF" Grid.Row="0" Grid.Column="0"/>
<CheckBox Content="ASP.NET" Grid.Row="0" Grid.Column="1"/>
<CheckBox Content="Java" Grid.Row="1" Grid.Column="0"/>
<CheckBox Content="C+" Grid.Row="1" Grid.Column="1"/>
</ListBox>
恐怕你不能這樣做,沒有約束力。 'ListBox'將項目包裝在'ListBoxItem'中,它變成'ItemsPanel'的直接子項,並且你可以通過綁定在'ItemsContainerStyle'中設置'Grid.Column'和/或'Grid.Row' – dkozl
謝謝。我使用ListBox是因爲它可以滾動,如果我想添加更多的行。你是否建議切換到ListView,DataGrid或其他控件? (再次,因爲我不需要這些數據綁定) – swabygw
然後不要使用'ListBox'並把'Grid'放入'ScrollViewer'中 – dkozl