将类的属性绑定到WPF按钮

时间:2018-09-28 15:30:01

标签: c# .net wpf

因此,我想将列表中列表中的类的2个属性绑定到WPF程序中动态生成的Button的内容。

到目前为止,这是我将动态生成的按钮绑定为2D网格的XAML

 <Window.Resources>
    <DataTemplate x:Key="DataTemplate_Level2">
        <Button Height="35" Width="35" Margin="-1,-1,-1,-1" IsEnabled="{Binding}" x:Name="fieldButton" Click="fieldClick" Content="{Binding}"/>
    </DataTemplate>

    <DataTemplate x:Key="DataTemplate_Level1">
        <ItemsControl ItemsSource="{Binding}" ItemTemplate="{DynamicResource DataTemplate_Level2}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </DataTemplate>

</Window.Resources>
<Grid>
    <ItemsControl x:Name="lst" ItemTemplate="{DynamicResource DataTemplate_Level1}" Margin="0,0,339,0">
    </ItemsControl>
</Grid>

这是创建网格并使用正确的值填充该类的属性的类

class Grid {

    private const int SIZE = 10;
    private List<List<Field>> fields;

    public Grid() {
        fields=new List<List<Field>>();

        for(int i = 0; i < SIZE; i++) {
            fields.Add(new List<Field>());
            for(int j = 0; j < SIZE; j++) {
                fields[i].Add(new Field(i, j));
            }
        }
    }

    public List<List<Field>> getFields() {
        return fields;
    }
}

这是具有填充属性的类

class Field {
    private int x;
    private int y;

    public Field(int x,int y) {
        this.x = x;
        this.y = y;
    }
}

当前,网格为每个按钮显示“ .Field”作为内容。我希望它是“ x,y”。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您只需要在字段 ToString()中添加class覆盖,即可在Content中显示更有趣的内容。