2012-02-10 16 views
0

我有簡單的WP7應用程序,我試圖綁定到使用Prism DelegateCommand的ApplicationBarButtonCommand。綁定錯誤使用ApplicationBarButtonCommand和DelegateCommand

代碼如下。

XAML:

<phone:PhoneApplicationPage.ApplicationBar> 
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"> 
     <shell:ApplicationBarIconButton IconUri="/Images/appbar.share.rest.png" Text="Add"/> 
    </shell:ApplicationBar> 
</phone:PhoneApplicationPage.ApplicationBar> 

<wi:Interaction.Behaviors> 
    <i:ApplicationBarButtonCommand ButtonText="Add" CommandBinding="{Binding SaveMessageCommand, Mode=OneWay}" 
            CommandParameterBinding="{Binding CurrentUser.Id}"/> 
</wi:Interaction.Behaviors> 

視圖模型:

公衆的ICommand SaveMessageCommand {獲得;私人設置; }

public MainViewModel(IDataService dataService, INavigationService navigationService) 
{ 
    //Some initialization goes here 

    SaveMessageCommand = new DelegateCommand<int>(OnSaveMessage); 
} 

private void OnSaveMessage(int userId) 
{ 
    if (_navigationService != null) 
    { 
     // TODO : change 0 to real current user id 
     _navigationService.NavigateTo(new Uri(string.Format(ViewModelLocator.CreateNewMessageUrl, userId), 
        UriKind.Relative)); 
    } 
} 

用戶等級:

public class User : BaseModel 
{ 
    private int _id; 

    public int Id 
    { 
     get { return _id; } 
     set 
     { 
      if (value == _id) 
      { 
       return; 
      } 

      _id = value; 
      RaisePropertyChanged("Id"); 
     } 
    } 
} 

當我運行應用程序,我有數據錯誤

System.Windows.Data Error: 'MS.Internal.Data.DynamicValueConverter' converter failed to convert value 'Microsoft.Practices.Prism.Commands.DelegateCommand`1[System.Int32]' (type 'Microsoft.Practices.Prism.Commands.DelegateCommand`1[System.Int32]'); BindingExpression: Path='SaveMessageCommand' DataItem='WindowsPhone_Application.ViewModel.MainViewModel' (HashCode=75877085); target element is 'Microsoft.Practices.Prism.Interactivity.ApplicationBarButtonCommand' (Name='null'); target property is 'CommandBinding' (type 'System.Windows.Data.Binding').. System.InvalidOperationException: Can't convert type Microsoft.Practices.Prism.Commands.DelegateCommand`1[System.Int32] to type System.Windows.Data.Binding. 

任何想法可能會導致問題?

感謝

回答

0

修正了問題,問題是與System.Windows.Interactivity,只是把引用另一個版本,其中包括與棱鏡