rotate()
我像这样制作FlipView。
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ctrls="clr-namespace:Xama_Test.Controls;assembly=Xama_Test"
x:Class="Xama_Test.FlipPage1">
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
<ctrls:Flip ItemsSource="{Binding Imgs}" HeightRequest="300" AutoPlay="True">
<ctrls:Flip.ItemTemplate>
<DataTemplate x:Name="Dtmp">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<Image x:Name="FlipImage" Source="{Binding Key}" Grid.RowSpan="2" Aspect="AspectFill" />
<Label Text="{Binding Value}" Grid.Row="1" BackgroundColor="#333333" Opacity="0.5" TextColor="White" VerticalOptions="Center" />
</Grid>
</DataTemplate>
</ctrls:Flip.ItemTemplate>
</ctrls:Flip>
</StackLayout>
</ContentView>
我在mainActivity中使用这个FlipVIew。
我想在mainActivity的c#中获得名为FlipImage的控件。 如果选中此图像,请添加功能。 如何在DataTemplete中获得控制权?
答案 0 :(得分:0)
您无法通过数据模板中的名称访问任何控件。因为此数据模板中的每个项目都具有相同的名称,那么您需要哪个项目?
您可以通过在Visual树中找到它来完成。
使用样本:
private void SomeMethod()
{
ComboBox myCombo = GetVisualChild<ComboBox>(_contentPresenter);
}
private T GetVisualChild<T>(DependencyObject parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GetVisualChild<T>(v);
}
if (child != null)
{
break;
}
}
return child;
}