0

私はMVVMLightの使用にかなり慣れていないので、これが簡単な修正であることを願っていますが、答えを突き止めるために1日のほとんどを費やしてきました:-(

私のxamlで

<sdk:DataGrid Name="m_dgResults" AutoGenerateColumns="False" IsReadOnly="True" AreRowDetailsFrozen="True" SelectionMode="Single" ItemsSource="{Binding SearchResults}" >

.
.
.

<Button x:Name="cmdFTSViewText" Width="24" Height="24" Margin="5"  ToolTipService.ToolTip="View Text">
  <Image Source="../Images/ViewDocumentText.png" Stretch="None"/>
  <i:Interaction.Triggers>
      <i:EventTrigger EventName="Click">
          <cmd:EventToCommand Command="{Binding Source={StaticResource Locator}, Path=FindModel.ViewDocumentTextCommand}" 
                              CommandParameter="{Binding iUniqueID}"/>
      </i:EventTrigger>
  </i:Interaction.Triggers>
 </Button>

私のViewModelで

public RelayCommand<int> ViewDocumentTextCommand { get; private set; }
public FindModel() 
{
    .
    .
    .
    ViewDocumentTextCommand = new RelayCommand<Int32>(p => { ViewDocumentText(p); });
}

public void ViewDocumentText(Int32 iDocumentID)
{
    .
    .
    .
}

SearchResults.iUniqueIDはInt32です

何らかの理由で、ボタンが押されたときに上記の例外がスローされます。

ありがとう

4

1 に答える 1

2

おそらく、RelayCommandがとして定義されていて、それRelayCommand<int>に割り当てようとしていることが原因です。RelayCommand<Int32>

ICommand代わりに、コマンド定義を単純に変更してみてください。

また、最初のバインドの前に値がnullである可能性もあります。タイプを指定せずに、代わりにオブジェクトを使用してみてください。

new RelayCommand(p => ViewDocumentText(p));

public void ViewDocumentText(object iDocumentID)

于 2011-06-23T19:41:49.090 に答える