2014-10-14 4 views
6

xaml 파일에서 Xamarin.Forms 마크 업을 사용하여 추가 한 항목을 Listview에 추가하려고합니다. 버튼은 클릭 이벤트와 연결하여 액세스 할 수 있습니다. 그러나 listview는 비어 있기 때문에 win38s와 같이 ondraw과 같은 이벤트가 필요하므로 그릴 때 연결할 수 있습니다. XAML 파일에서 Xamarin.Forms 코드에서 코드로 작성된 코드

enter image description here

나는이 다음 .cs에서

<?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> 

내가 그래서 내가 목록보기에서 이벤트에 후크해야

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"; 
     } 
    } 
} 

이 아니면 내가 뭔가를 할 수있는 파일 like Resource.getElementbyID 우리가 안드로이드에 좋아하는 것

+0

왜 *이 그려 * 때에 후크하려고? 일반적으로 양식이로드 될 때 또는 유사한 모양으로 채워집니다. 여기에 뷰 모델에 대한 바인딩을 사용하지 않는 이유가 있습니까? 그게 더 일반적인 접근 방식 - MVVM을 받아 들일 것입니다 :) –

+0

@ JonSkeet 이유? 나는 그것을 어떻게 해야할지 모르겠다 :) 당신이 나에게 예제 또는 무언가에 대한 링크를 제게 제공 할 수 있습니까, 상당히 새로운 xamarin.forms.In에서 안드로이드 우리는 customadaptor를 만들고 리소스를 사용하여 리소스에서 얻을 listview에 할당 .getElementbyID, xamarin.forms에서 어떻게해야합니까? – techno

+1

Xamarin.Forms 코드를 Android 코드처럼 쓰려고하는 것이 아니라 Xamarin.Forms가 작동하는 방식과 그 관용구를 읽으시기 바랍니다. 그런 식으로 많은 코드를 끝낼 것입니다. http://developer.xamarin.com/guides/cross-platform/xamarin-forms/xaml-for-xamarin-forms/data_bindings_to_mvvm/에는 Xamarin.Forms에 MVVM이 도입되었으며 다른 많은 설명서가 있습니다. (저는 XAML에'Name' 속성을 제공 할 수 있다고 믿습니다. 코드 숨김에 변수가 생기 겠지만, MVVM을 사용하면 훨씬 더 명확하고 테스트 가능할 것입니다.) –

답변

17

액세스하려면 Forms에은에 제어 코드 숨김, 당신은 XAML에서 x:Name 속성

를 사용하여, 그것을 이름을 지정해야합니다

코드에
<ListView HorizontalOptions="Center" x:Name="MyList" /> 

가 :

MyList.ItemsSource = myData; 
+0

감사합니다. 작동하지만 자동 완료 인식하지 못합니다. – techno

+0

Pls는 플랫폼의 클래스에서 if에 액세스하려는 경우 제안합니다. ExportRenderer를 사용하여 PageRenderer에서 상속 된 특정 프로젝트. –

7

버그에있다 Xamarin은 정의 된 x : 이름을 볼 수 없습니다. http://forums.xamarin.com/discussion/25409/problem-with-xaml-x-name-and-access-from-code-behind

XAML에서 이미지를 정의했다고 가정 해 보겠습니다.

<Image x:Name="myImageXName" /> 

그런 다음이 뒤에 코드에서 작동합니다 : 내 경우

this.FindByName<Image>("myImageXName"); 
+0

확인할 수 있습니다.나는 항상이 문제를 Xamarin Studio에서 다루기 때문에이 작업을 수행해야합니다. –

2

을 문제 .xaml.cs 파일의 라인 XamlCompilation(XamlCompilationOptions.Compile)]의 부족이었다.

예 :

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