我一般还在学习Xamarin Forms和C#.所以在我的MainPage.xaml中我有这个:
<StackLayout> <button Text="bttn1" Clicked="button_Clicked"/> <button Text="bttn2" Clicked="button_Clicked_1"/> <ContentVIEw x:name="displayCustomContentVIEw"> </ContentVIEw> </StackLayout>
和两个ContentVIEws:
查看1:
public class VIEw1 : ContentVIEw{ public VIEw1 () { Content = new StackLayout { Children = { new Label { Text = "VIEw 1" }, new Entry {Placeholder = "entry1 VIEw 1"}, new Entry {Placeholder = "entry2 VIEw 1"} } }; }}
观点2:
public class VIEw2 : ContentVIEw{ public VIEw2 () { Content = new StackLayout { Children = { new Label { Text = "VIEw 2" }, new Entry {Placeholder = "entry2 VIEw 1"}, new Entry {Placeholder = "entry2 VIEw 2"} } }; }}
所以当我点击按钮时,我想在视图之间切换.我试过这个:
private voID button_Clicked(object sender, EventArgs e) { displayCustomContentVIEw = new VIEw1(); }
我怎样才能从Entry字段中获取值?
我大多肯定我做得不对.我可以使用我能得到的所有帮助!
解决方法:
回答你的问题:
And how can i get the values from the Entry fIElds?
有简单的答案和不那么简单的答案.
简单的答案,因为你在C#(而不是XAML)中构建VIEw1和VIEw2,就是存储对Entry对象的引用:
public class VIEw1 : ContentVIEw{ public Entry Entry1 { get; private set; } public Entry Entry2 { get; private set; } public VIEw1 () { Entry1 = new Entry { Placeholder = "entry1 VIEw 1" }; Entry2 = new Entry { Placeholder = "entry1 VIEw 2" }; Content = new StackLayout { Children = { new Label { Text = "VIEw 1" }, Entry1, Entry2 } }; }}
然后,在某些按钮回调或Command(或程序获得控制时),您可以查看Entry1.Text和Entry2.Text属性以查看用户输入的内容.
现在就不那么简单的方式,MVVM和模型绑定.虽然代码涉及更多,但它是一种非常流行的编写Xamarin.Forms应用程序的方法,因为它使您能够更好地将视图代码与其余逻辑分开.这有助于分离应用程序中的问题,以提高可测试性,可维护性等.您可以使用Xamarin内置功能执行此 *** 作,但是很多人喜欢使用各种MVVM包来进一步支持MVVM原则.
为了使用VIEw1(仅使用内置的Xamarin.Forms功能)进行简单说明,您还可以创建一个VIEw1viewmodel类,如下所示:
public class VIEw1viewmodel{ public string Entry1 { get; set; } public string Entry2 { get; set; }}public class VIEw1 : ContentVIEw{ public VIEw1viewmodel viewmodel { get; private set; } public VIEw1 () { viewmodel = BindingContext = new VIEw1viewmodel(); var entry1 = new Entry { Placeholder = "entry1 VIEw 1" }; var entry2 = new Entry { Placeholder = "entry1 VIEw 2" }; entry1.SetBinding(Entry.TextProperty, "Entry1"); entry2.SetBinding(Entry.TextProperty, "Entry2"); Content = new StackLayout { Children = { new Label { Text = "VIEw 1" }, entry1, entry2 } }; }}
在此模型中,不是直接查看底层UI元素(Entry对象)上的属性,而是其他代码可以查看视图模型,因为当条目的值更改时,这些属性会自动更新.
虽然这个示例代码随着模型绑定的增加而变得更大,但在使用XAML时它往往更简洁一些.
当然还有MVVM的其他方面(INotifyPropertyChanged等),我鼓励你学习更多,但这有点超出原始问题的范围.
总结以上是内存溢出为你收集整理的c# – ContentView Xamarin Forms全部内容,希望文章能够帮你解决c# – ContentView Xamarin Forms所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)