Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在contentpage的contentview的stacklayout中添加控件?_C#_Xamarin_Xamarin.ios_Xamarin.forms_Xamarin.android - Fatal编程技术网

C# 如何在contentpage的contentview的stacklayout中添加控件?

C# 如何在contentpage的contentview的stacklayout中添加控件?,c#,xamarin,xamarin.ios,xamarin.forms,xamarin.android,C#,Xamarin,Xamarin.ios,Xamarin.forms,Xamarin.android,我正在使用xamarin.forms。有两个项目Android和IOS 我有一个ContentView页面,其中包含以下代码 <ContentView.Content> <StackLayout x:Name="slMain" Padding="1" BackgroundColor="#7ABA45"> <StackLayout VerticalOptions="FillAndExpand" Padding="0,0,20,0" Height

我正在使用xamarin.forms。有两个项目Android和IOS

我有一个ContentView页面,其中包含以下代码

<ContentView.Content>
    <StackLayout x:Name="slMain" Padding="1" BackgroundColor="#7ABA45">
        <StackLayout VerticalOptions="FillAndExpand" Padding="0,0,20,0" HeightRequest="50" HorizontalOptions="FillAndExpand">
            <Label x:Name="lblTitle" VerticalOptions="CenterAndExpand"  />
        </StackLayout>
        <StackLayout x:Name="sl" IsVisible="False" BackgroundColor="White">
        </StackLayout>
    </StackLayout>
</ContentView.Content>


// In Behind code(.cs file)

    public ExpandCollapseStackLayout()
    {
        InitializeComponent(); 
        var tapGestureRecognizer = new TapGestureRecognizer();
        tapGestureRecognizer.Tapped += (s, e) =>
        {
            sl.IsVisible = !sl.IsVisible;
        };
        lblTitle.GestureRecognizers.Add(tapGestureRecognizer);
        slMain.GestureRecognizers.Add(tapGestureRecognizer);
    }

    public string Title
    {
        get
        {
            return lblTitle.Text;
        }
        set
        {
            lblTitle.Text = value;
        }
    }

//内置代码(.cs文件)
public ExpandCollapseStackLayout()
{
初始化组件();
var tapGestureRecognizer=新的tapGestureRecognizer();
轻触+=(s,e)=>
{
sl.IsVisible=!sl.IsVisible;
};
lblTitle.GestureRecognizers.Add(tapGestureRecognizer);
slMain.GestureRecognizers.Add(tapGestureRecognizer);
}
公共字符串标题
{
收到
{
返回lbltite.Text;
}
设置
{
lblTitle.Text=值;
}
}
我想在设计时在ContentPage的contentview的StackLayout中添加名为“sl”的控件。 我不想在运行时添加


请建议我如何在Contentview stacklayout中添加控件?

如果要在设计时添加控件,只需在XAML中声明它们,例如:

<StackLayout x:Name="sl" IsVisible="False" BackgroundColor="White">
  <!-- Add here your controls -->
  <Label ... />
  <Button .. />
</StackLayout>

ContentView的代码:

<ContentView.Content>
    <StackLayout x:Name="slMain" Padding="1" BackgroundColor="#7ABA45" >
        <StackLayout VerticalOptions="FillAndExpand" Padding="0,0,10,0" HeightRequest="50" HorizontalOptions="FillAndExpand" Orientation="Horizontal">
            <Label x:Name="lblTitle" VerticalOptions="CenterAndExpand" HorizontalOptions="FillAndExpand" Margin="10,0,0,0" TextColor="White" FontAttributes="Bold"  />
            <Label Text="{ x:Static local:GrialShapesFont.ArrowDown }" HorizontalOptions="End" VerticalOptions="CenterAndExpand" TextColor="White" Style="{ StaticResource FontIconBase }" FontSize="26" />
        </StackLayout>
        <Frame Padding="10" IsVisible="False" BackgroundColor="White" x:Name="ContentFrame" OutlineColor="Black" HasShadow="False">
        </Frame>
    </StackLayout>
</ContentView.Content>
[ContentProperty("ContainerContent")]
public partial class ExpandCollapseStackLayout : ContentView
{
    public ExpandCollapseStackLayout()
    {
        InitializeComponent();
        var tapGestureRecognizer = new TapGestureRecognizer();
        tapGestureRecognizer.Tapped += (s, e) =>
        {
            ContentFrame.IsVisible = !ContentFrame.IsVisible;
        };
        lblTitle.GestureRecognizers.Add(tapGestureRecognizer);
        slMain.GestureRecognizers.Add(tapGestureRecognizer);
    }

    public View ContainerContent
    {
        get { return ContentFrame.Content; }
        set { ContentFrame.Content = value; }
    }
    public string Title
    {
        get
        {
            return lblTitle.Text;
        }
        set
        {
            lblTitle.Text = value;
        }
    }
}
<control:ExpandCollapseStackLayout Title="Demo" Padding="0,10,0,0">
                <control:ExpandCollapseStackLayout.ContainerContent >
                    <StackLayout>
                        <Label Text="Add Content Here"></Label>
                    </StackLayout>
                </control:ExpandCollapseStackLayout.ContainerContent>
 </control:ExpandCollapseStackLayout>
在ContentPage中添加控件:

<ContentView.Content>
    <StackLayout x:Name="slMain" Padding="1" BackgroundColor="#7ABA45" >
        <StackLayout VerticalOptions="FillAndExpand" Padding="0,0,10,0" HeightRequest="50" HorizontalOptions="FillAndExpand" Orientation="Horizontal">
            <Label x:Name="lblTitle" VerticalOptions="CenterAndExpand" HorizontalOptions="FillAndExpand" Margin="10,0,0,0" TextColor="White" FontAttributes="Bold"  />
            <Label Text="{ x:Static local:GrialShapesFont.ArrowDown }" HorizontalOptions="End" VerticalOptions="CenterAndExpand" TextColor="White" Style="{ StaticResource FontIconBase }" FontSize="26" />
        </StackLayout>
        <Frame Padding="10" IsVisible="False" BackgroundColor="White" x:Name="ContentFrame" OutlineColor="Black" HasShadow="False">
        </Frame>
    </StackLayout>
</ContentView.Content>
[ContentProperty("ContainerContent")]
public partial class ExpandCollapseStackLayout : ContentView
{
    public ExpandCollapseStackLayout()
    {
        InitializeComponent();
        var tapGestureRecognizer = new TapGestureRecognizer();
        tapGestureRecognizer.Tapped += (s, e) =>
        {
            ContentFrame.IsVisible = !ContentFrame.IsVisible;
        };
        lblTitle.GestureRecognizers.Add(tapGestureRecognizer);
        slMain.GestureRecognizers.Add(tapGestureRecognizer);
    }

    public View ContainerContent
    {
        get { return ContentFrame.Content; }
        set { ContentFrame.Content = value; }
    }
    public string Title
    {
        get
        {
            return lblTitle.Text;
        }
        set
        {
            lblTitle.Text = value;
        }
    }
}
<control:ExpandCollapseStackLayout Title="Demo" Padding="0,10,0,0">
                <control:ExpandCollapseStackLayout.ContainerContent >
                    <StackLayout>
                        <Label Text="Add Content Here"></Label>
                    </StackLayout>
                </control:ExpandCollapseStackLayout.ContainerContent>
 </control:ExpandCollapseStackLayout>


我在内容页中这样写,但它不起作用。请提供适当的示例。很难理解为什么它不起作用,因为您没有提供太多详细信息。疯狂射击。您已将IsVisible=“False”更改为IsVisible=“True”。确保不在代码隐藏/删除sl控件,并确保其顶部没有其他控件。调试代码并检查事件是否触发两次,为什么要在不同元素上添加两次相同的手势识别器?找到解决方案了吗?我也有同样的要求