c# - 将绑定(bind)添加到在代码隐藏中创建的元素

标签 c# xamarin xamarin.forms

我有一个 ViewModel,我想从中更新我的 View 。 ViewModel 具有利用 PropertyChangedEventHandler 动态更新 View 上的元素的属性。

对于我 View 中的大多数元素,我使用 BindingContext,即

BindingContext = carouselViewModel;

但是,在 View 初始化期间,我从后面的代码中添加了几个图像元素:

foreach (Carousel e in partner.getPartnerItem())
{
    dots.Children.Add(new Image
    {
        Source = "dot_unselected.png",
    });
}

这里的getPartnerItem是一个对象列表,用于确定 View 应该保存多少Image。在这种情况下,“dots”是一个 StackLayout

从名为 carouselViewModel 的 ViewModel 中,我动态选择 Image 元素,即:

public bool isSelected
{
    get
    {
        return _isSelected;
    }
    set
    {
        _isSelected = value;
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(isSelected)));
    }
}

_isSelected 是从另一个模型更改而来的,其中计时器触发事件​​。

当然,由于我的图像是动态添加的,我无法像这样进行标准绑定(bind):

<Image Source="{Binding whatEverProperty}"/>

因此,我尝试在后面的代码中执行以下操作,如下所示:

public FrontPage()
{
    Image currentSlider;

    for (int i = 0; i <= partner.getPartnerItem().Count() ; i++)
    {
        if (carouselViewModel.numberInList == i && carouselViewModel.isSelected)
        {
            currentSlider = (Image)dots.Children.ElementAt(i);
            currentSlider.Source = "dot_selected.png";
        }
        else
        {
            currentSlider = (Image)dots.Children.ElementAt(i);
            currentSlider.Source = "dot_unselected.png";
        }
    }
}

上面,我尝试通过 getPartnerItem() 关联列表中对象对应的 StackLayout 中名为“dots”的 Image >。此外,我还获取了 carouselViewModel.numberInList ,它基本上用于告诉在列表中选择了哪个对象。

不幸的是,没有任何反应,我的图像仍然以“dot_unselected.png”作为源。

总而言之,当我像上面的示例中那样动态添加元素时,有没有一种方法可以将图像绑定(bind)到具有唯一标识符的 ViewModel?

最佳答案

您可以在代码中创建绑定(bind)

myImage.SetBinding(Image.SourceProperty, "BindingPath");

关于c# - 将绑定(bind)添加到在代码隐藏中创建的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57536373/

相关文章:

c# - WKWebView 使用 LoadFileUrl 加载本地内容

ios - 更改 IOS Xamarin Forms 中的开关颜色

c# - 即使存在命名空间也能工作的表达式?

c# - CommandText 中的文本长度是否有任何限制

c# - ScaleTransform 有什么用?

android - Xamarin.Android 应用的静音

android - 为 PocketSphinxAndroidDemo 创建和使用 Java 绑定(bind)库

linq - Xamarin Forms - 如何从 MergedDictionaries 中选择 C# 中的资源

xamarin.forms - 如何解决 Xamarin Forms API 弃用错误 410

c# - 在更新外键字段之前释放 DataContext