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

标签 c# wpf xaml

我有大约 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>

关于c# - WPF 绑定(bind)到数组/集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36890098/

相关文章:

c# - WPF TreeView-添加/删除节点后如何刷新树?

.net - 如何使透明 WPF 窗口位于所有其他窗口之上,但不影响用户输入?

c# - 使用 C# 在 FTP 中上传的文件保存为 STOR

c# - 我的 IEnumerable 是否应该枚举作为参数传递给 AddRange() 之类的方法的 IEnumerable?

c# - 如何用十六进制颜色值填充矩形?

c# - 如何确定 ObservableCollection<T> 中的一行是否实际更改

c# - WPF中的绑定(bind)问题——属性和字段的区别

c# - "Assembly is not referenced by this project"WPF资源字典错误

c# - 根据数据库mysql填充datagridviewcombobox

c# - 确保 Weakreference 在 IsAlive 之后仍然存在