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
Xamarin 在XAML中创建元素后,在C#中编辑它们_Xamarin_Xamarin.forms - Fatal编程技术网

Xamarin 在XAML中创建元素后,在C#中编辑它们

Xamarin 在XAML中创建元素后,在C#中编辑它们,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我在XAML中创建了几个条目和按钮(还没有C代码)。 是否可以编辑或甚至将C代码中的元素添加到用XAML制作的StackLayout中 例如,具有以下XAML代码: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/x

我在XAML中创建了几个条目和按钮(还没有C代码)。 是否可以编辑或甚至将C代码中的元素添加到用XAML制作的StackLayout中

例如,具有以下XAML代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:ORTEC_MOBILE"
         x:Class="ORTEC_MOBILE.MainPage"
         BackgroundColor="#0074ff">

<RelativeLayout>
    <StackLayout HorizontalOptions="FillAndExpand"
        RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.25,Constant=0}"        
        RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1,Constant=0}">
        <Label Text="Login" FontSize="36" TextColor="White" HorizontalTextAlignment="Center">
        </Label>
        <Label Text="Welcome back! Please log into your account." FontSize="12" TextColor="White" HorizontalTextAlignment="Center">
        </Label>
    </StackLayout>
</RelativeLayout>


是否可以使用C代码向布局中添加按钮?

是的,绝对可能。当您为元素赋予属性
x:Name=“element”
时,它在代码隐藏中作为“element”可用。请参见Xamarin站点上的此示例,了解他们如何在代码中调用元素:


x:Name
属性允许为在XAML中实例化的对象命名。这些名称的规则与C#变量名称的规则相同。在构造函数中返回
InitializeComponent
调用后,代码隐藏文件可以引用这些名称来访问相应的XAML元素。XAML解析器实际上将这些名称转换为生成的分部类中的私有字段。

是的,绝对可能。当您为元素赋予属性
x:Name=“element”
时,它在代码隐藏中作为“element”可用。请参见Xamarin站点上的此示例,了解他们如何在代码中调用元素:


x:Name
属性允许为在XAML中实例化的对象命名。这些名称的规则与C#变量名称的规则相同。在构造函数中返回
InitializeComponent
调用后,代码隐藏文件可以引用这些名称来访问相应的XAML元素。XAML解析器实际上将这些名称转换为生成的分部类中的私有字段。

完全可以从代码后面以编程方式添加控件,我将在下面给出一个示例

给您希望添加控件的组件一个名称可能很有用,这样就可以从xaml后面的类访问它

因此,在本例中,我只是将一个名称归因于您的xaml堆栈布局

XAML:


将上述内容作为一个粗略的示例,应该足以让您在自己的项目中复制它。祝你好运。

完全有可能从代码背后以编程方式添加控件,我将在下面给你一个示例

给您希望添加控件的组件一个名称可能很有用,这样就可以从xaml后面的类访问它

因此,在本例中,我只是将一个名称归因于您的xaml堆栈布局

XAML:


将上述内容作为一个粗略的示例,应该足以让您在自己的项目中复制它。祝你好运。

非常感谢!没问题,如果这个回答了你的问题,请考虑把这个标记为答案。我很抱歉,但我必须标记另一个答案。你的回答也很好!别见怪非常感谢你!没问题,如果这个回答了你的问题,请考虑把这个标记为答案。我很抱歉,但我必须标记另一个答案。你的回答也很好!别见怪非常感谢你!顺便说一句,4小时前我还发布了另一个问题。如果你不介意的话,你能再检查一下这个问题吗?@Radu很乐意看一看。别忘了这个答案是否有助于准确解答您的问题,别忘了将其标记为答案。非常感谢!顺便说一句,4小时前我还发布了另一个问题。如果你不介意的话,你能再检查一下这个问题吗?@Radu很乐意看一看。别忘了如果这个答案有助于准确地解决你的问题,别忘了把它标记为答案。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:ORTEC_MOBILE"
         x:Class="ORTEC_MOBILE.MainPage"
         BackgroundColor="#0074ff">

<RelativeLayout>
    <StackLayout x:Name="mainStackLayout" HorizontalOptions="FillAndExpand"
        RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.25,Constant=0}"        
        RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1,Constant=0}">
        <Label Text="Login" FontSize="36" TextColor="White" HorizontalTextAlignment="Center">
        </Label>
        <Label Text="Welcome back! Please log into your account." FontSize="12" TextColor="White" HorizontalTextAlignment="Center">
        </Label>
    </StackLayout>
</RelativeLayout>
Public void SomeMethodThatsInMyBackingClass()
{
     Label newLabel = new Label {
            Text = "Hello, Forms!",
            FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label)),
            VerticalOptions = LayoutOptions.CenterAndExpand,
            HorizontalOptions = LayoutOptions.CenterAndExpand,
        },

     mainStackLayout.Children.Add(newLabel);
}