【问题标题】:I want get control by name to DataTemplete in Xamarin.form我想通过名称控制 Xamarin.form 中的 DataTemplete
【发布时间】:2017-04-05 02:46:57
【问题描述】:
<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>

我这样制作 FlipView。

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:controls="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions"              
         xmlns:local="clr-namespace:Xama_Test"
         x:Class="Xama_Test.Xama_Test"
         Title="MainPage">
    <ScrollView x:Name="_LargeScroll" Orientation="Vertical">
        <StackLayout Orientation = "Vertical" x:Name="SLO" >
            <local:FlipPage1 x:Name="FlipMenu" />   
        </StackLayout>
        </ScrollView>
     </ContentPage>

我在 mainActivity 中使用了这个 FlipVIew。

我想在 mainActivity 的 c# 中获取名为 FlipImage 的控件。 如果选项卡此图像,则添加功能。 如何在 DataTemplete 中获得控制权?

【问题讨论】:

    标签: c# xaml xamarin.forms


    【解决方案1】:

    您无法在数据模板中按名称访问任何控件。因为这个数据模板中的每一项都会有这个相同的名字,那么你想要哪一项呢?

    您可以通过在可视化树中查找来做到这一点。

    使用示例:

    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;
    }
    

    来源:WPF How to access control from DataTemplate

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 2020-02-13
      • 2015-09-09
      相关资源
      最近更新 更多