Skip to main content
 首页 » 编程设计

c#之WPF 绑定(bind)到数组/集合

2024年01月31日24zhwl

我有大约 30 个控件,每个控件都具有相同的模型。我不想绑定(bind) ~30 个属性和 ~30 个私有(private)变量,而是绑定(bind)到一个数组,这样我也可以在属性上循环

例如,

假设我有以下内容(这只是一个例子)

public class MyImage 
{ 
    public String source { get; set;} 
    public String tooltip { get; set;} 
} 

xaml

<Grid> 
    <Image Name="image0" Source="{Binding MyImage0.source"}/> 
    <Image Name="image1" Source="{Binding MyImage1.source"}/> 
    <Image Name="image2" Source="{Binding MyImage2.source"}/> 
    ... 
</Grid> 

我想替换那个 XAML 文件,让源代码像 MyImages[0].source 所以我也可以遍历它并在运行时设置它而不必编写 MyImage0.source="mysource"

请您参考如下方法:

我建议如下:

有一个 MyImage 类型的集合,例如:

public ObservableCollection<MyImage> MyImageCollection { get; set; } 

然后在您的 View 中使用 DataTemplate 和 ItemsControl:

<Grid> 
    <ItemsControl ItemsSource="{Binding MyImageCollection}"> 
        <ItemsControl.ItemTemplate> 
            <DataTemplate> 
                <Image Source="{Binding source}" /> 
            </DataTemplate> 
        </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid>