使用Xamarin Forms在DataTemplate中调用codebehind变量

时间:2017-03-13 11:53:38

标签: c# xaml xamarin xamarin.forms portable-class-library

它将从代码隐藏 firstGrid secondGrid 对象中恢复。 但这些都在DataTemplate中,我可以从代码隐藏中回忆起它们吗?

谢谢。

这是我的代码:

private void WrapPanel_SizeChanged(object sender, SizeChangedEventArgs e)
{
    btn1.Margin = new Thickness(0, 0, Math.Max(0, wp.ActualWidth - btn1.ActualWidth - btn2.ActualWidth), 0);
}

警告:在重复之前,代码适用于Xamarin表单pcl。与WPF的c#略有不同。

感谢

1 个答案:

答案 0 :(得分:1)

使用DataTemplate时,绑定涉及您绑定的对象,而不是您可能使用过的ViewModel。

但不要害怕,因为Xamarin为我们提供了对这种物体进行治疗的方法!

我们假设您要点击图片:

<Button Image="nextBlueArrow.png" BorderColor="Transparent" BackgroundColor="Transparent" Clicked="clickmeNext" Grid.Column="3"></Button>

可能会成为

<Image Source="nextBlueArrow.png">
   <Image.GestureRecognizers>
     <TapGestureRecognizer
       Tapped="clickmeNext"
       CommandParameter="{Binding .}" />
     </Image.GestureRecognizers>
</Image>

使用代码中的clickmeNext方法,如下所示:

public async void clickmeNext(object sender, EventArgs e) 
        {
            Image imageSender = (Image)sender;
            YourObject yourObject= (YourObject )imageSender.BindingContext;

            //some actions on your instance of YourObject, 
            //which is the instance linked to the image
        }

如果我没有回答你的问题,请不要犹豫,加入你的问题,以便更清楚。