Xamarin 在XAML中创建元素后,在C#中编辑它们
我在XAML中创建了几个条目和按钮(还没有C代码)。 是否可以编辑或甚至将C代码中的元素添加到用XAML制作的StackLayout中 例如,具有以下XAML代码: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
<?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);
}