2014-10-14 17 views
6

işaretlemede yazılan denetimlere erişme Bazı öğeleri bir xaml dosyasında Xamarin.Forms işaretini kullanarak eklediğim bir List görünümüne eklemeye çalışıyorum. Düğme tıklatma olayıyla kancalanarak erişilebilir. Ancak liste görünümü boş olduğu için, winformlarda olduğu gibi ondraw gibi olaya ihtiyacım var, böylece çizildiğinde ona bağlanabiliyorum. XAML dosyasında Xamarin.Forms, Code

enter image description here

Ben: .cs olarak

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="ButtonXaml.ButtonXamlPage"> 
      <StackLayout> 
    <Button Text="Tap for click count!" 
    BorderWidth="10" 
    TextColor="Red" 
    HorizontalOptions="Center" 
      Clicked="OnButtonClicked" /> 
      <ListView 
      HorizontalOptions="Center" 

      /> 

    </StackLayout> 
</ContentPage> 

i Yani Listview olaylara bağlamalı

using System; 
using Xamarin.Forms; 

namespace ButtonXaml 
{ 
    public partial class ButtonXamlPage 
    { 
     int count = 0; 

     public ButtonXamlPage() 
     { 
      InitializeComponent(); 
     } 

     public void OnButtonClicked(object sender, EventArgs args) 
     { 
      ((Button)sender).Text = "You clicked me"; 
     } 
    } 
} 

varsa veya ben bir şey yapabilirim dosya Resource.getElementbyID gibi biz android

+0

Neden * o çizilmiş * olduğunda kanca için çalışıyorsun? Normalde, form * yüklenmiş * veya benzer bir şey olduğunda görünümü doldurursunuz. Burada bir görünüm modeline bağlama kullanmamanın bir nedeni var mı? Bu daha geleneksel bir yaklaşım olurdu - MVVM kucaklamak :) –

+0

@JonSkeet Reason? Bunu nasıl yapacağımı bilmiyorum :) Bana bir örnek ya da bir şey, xamarin.forms. için oldukça yeni bir bağlantı sağlayabilir miyim.İnsan bir customadaptor oluşturmak ve kaynak kullanarak kaynak kullanarak almak için listview atama .getElementbyID, xamarin.forms nasıl yapılır? – techno

+1

Xamarin.Forms kodunu Android kodu gibi yazmayı denemekten ziyade, Xamarin.Forms'un çalışma biçimlerini ve deyimlerini okumanızı * şiddetle * tavsiye ederim. Bu şekilde * çok * güzel kod ile biter. http://developer.xamarin.com/guides/cross-platform/xamarin-forms/xaml-for-xamarin-forms/data_bindings_to_mvvm/ Xamarin.Forms içinde MVVM'yi tanıtıyor ve birçok başka doküman var. (Ben sadece XAML'de bir 'Name' özniteliği sağlayabileceğine ve kod arkasında bir değişken alacağınıza inanıyorum, fakat MVVM kullanmak çok daha temiz ve daha test edilebilir olacaktır.) –

cevap

17

erişmek için Bir Formlar içinde kontrol kod arkada, XAML x:Name niteliğini

kullanarak buna bir ad atamanız gerekir:

kodunda
<ListView HorizontalOptions="Center" x:Name="MyList" /> 

:

MyList.ItemsSource = myData; 
+0

Teşekkürler. Çalışır, ancak otomatik tamamlama onu tanımıyor. – techno

+0

Pls, PageRenderer'ın ExportRenderer'ı kullanarak devraldığı belirli bir projede, platformdaki sınıftan erişilip etkinleştirilmediğini önerir. –

2

sorun .xaml.cs dosyasındaki hattının XamlCompilation(XamlCompilationOptions.Compile)] eksikliği vardı.

Örnek:

[XamlCompilation(XamlCompilationOptions.Compile)] 
public partial class MainPage : ContentPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     BindingContext = new MainPageViewModel(); 
    } 
    ... 
}