我正在做基于Linq查询的按钮列表。
用户控件的.cs
public partial class GenerateButtonView : UserControl
{
public GenerateButtonView()
{
InitializeComponent();
List<Button> listOfButtons = new List<Button>();
for (int x = 0; x <= gb.ListDistinctAutoName().Count; x++)
{
Button b = new Button();
b.Content = "button" + x.ToString();
listOfButtons.Add(b);
}
}}
GenerateButtonModel.cs
public class GenerateButtonModel
{
public List<string> ListDistinctAutoName()
{
testViewClassDataContext tv = new testViewClassDataContext();
List<string> q3 = tv.test_views.Select(i => i.AutoName).Distinct().ToList();
return q3;
}}
如何将创建的按钮列表绑定到我的网格?
用户控件的.xaml
<UserControl.....>
....
<Grid Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="5" Grid.RowSpan="3">
</Grid>
</UserControl>
答案 0 :(得分:1)
您应该使用ItemsControl
并将其ItemsSource
属性绑定或设置为List<Button>
:
<ItemsControl x:Name="ic" />
public GenerateButtonView()
{
InitializeComponent();
List<Button> listOfButtons = new List<Button>();
for (int x = 0; x <= gb.ListDistinctAutoName().Count; x++)
{
Button b = new Button();
b.Content = "button" + x.ToString();
listOfButtons.Add(b);
}
ic.ItemsSource = listOfButtons;
}}
我的想法是按钮应该水平放置,并且它们之间有边距
然后,您可以使用StackPanel
作为ItemsPanel
的{{1}}:
ItemsControl
您可以设置每个按钮的<ItemsControl x:Name="ic">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
属性。
请注意,最佳做法是将Margin
属性绑定到数据对象的集合,然后在ItemTemplate中定义实际的UI元素(ItemsSource
):
Button
答案 1 :(得分:0)
您需要手动将按钮添加到网格
for (int x = 0; x <= gb.ListDistinctAutoName().Count; x++)
{
Button b = new Button();
b.Content = "button" + x.ToString();
listOfButtons.Add(b);
grid.Children.Add(b);
}
或使用ItemsControl
并将按钮列表设为ItemsSource