2016-09-08 3 views
0

Xaml에서 단추에 명령을 바인딩하려고합니다. ViewModel에 선언 된 속성을 바인딩하고 단추의 배경색을 변경하는 것을 볼 수 있습니다. 버튼에 명령을 추가하는 것과 같은 방법으로 버튼을 클릭했을 때 버튼이 명령을 실행하지 않았습니다.Xamarin Form : ViewModel에서 XAML로 명령 바인딩 방법

내 ViewModel에 명령 재산권

public Color Color 
    { 
     get 
     { 
      return Color.Teal; 
     } 
    } 

    public ICommand OpenFileCommand = new Command((object obj) => { 
     Task.Run(() => 
     { 
       var pickFileTask = CrossFilePicker.Current.PickFile(); 
       var data = pickFileTask.Result; 
       //OpenDocument(data.FileName, data.DataArray); 
     }); 
    }); 

XAML 부 :

<!-- Left Panel --> 
      <StackLayout x:Name="leftStack" Orientation="Vertical" BackgroundColor="Transparent"> 
       <Button 
        x:Name="btnOpen" 
        BackgroundColor="{Binding Color}" 
        Command="{Binding OpenFileCommand}" 
        Image="addfile" 
        HorizontalOptions="CenterAndExpand" 
        VerticalOptions="CenterAndExpand" 
        WidthRequest="40" 
        HeightRequest="40"> 
       </Button> 

내가 코드에 명령을 결합하면, 내보기 모델 클래스의 OpenFileCommmand를 실행합니다 :

btnOpen.Command = viewModel.OpenFileCommand; 
+0

어떤 부분이 작동하지 않는 것인지 혼란 스럽나요? 그것은 XAML 또는 C# –

+0

죄송합니다. 지금 작업하고 있습니다 ... 내가 Command 속성을 정의한 뷰 모델에서. getter로 변경하고 Command 객체를 반환했습니다. – LittleFunny

답변

0

Command Property를 정의한 View Model 클래스를 변경하여 작업하고 있습니다.

public ICommand OpenFileCommand 
    { 
     get 
     { 
      return new Command((object obj) => 
      { 
       Task.Run(() => 
       { 
        var pickFileTask = CrossFilePicker.Current.PickFile(); 
        var data = pickFileTask.Result; 
        OpenDocument(data.FileName, data.DataArray); 
       }); 
      }); 
     } 
    }