0

独自のビューとビューモデルを持つユーザーコントロールを含むビューがあります。

ビューのユーザーコントロールは次のようになります。

<UserControl.DataContext>
    <viewmodel:TimePickerViewModel x:Name="timePickerViewModel"/>
</UserControl.DataContext>

ユーザーコントロールのビューモデルには、ValidTime プロパティがあります。

public DateTime? ValidTime
{
    get { return validTime; }
    set
    {
        validTime = value;
        OnPropertyChanged("ValidTime");
    }
}

ユーザー コントロールを含むビューで、ValidTime プロパティにアクセスする必要があります。

<timepicker:TimePickerView Grid.Row="0" x:Name="timePicker"/>
<Button Grid.Row="1" Content="Plan" Command="{Binding PlanCommand}" CommandParameter="    {Binding ElementName=timePicker, Path=ValidTime}"/>

最後のビューのビューモデルには、次のものがあります。

public ICommand PlanCommand
{
    get { return planCommand ?? new RelayCommand<DateTime?>(Plan); }
}

void Plan(DateTime? date)
{
    if(pickedMagnet != null)
            pickedMagnet.StartDatePlanned = date;
}

しかし、DateTime? Plan メソッドで受け取るパラメーターは常に null です。しかし、デバッグ モードでは、プロパティ ValidTime に値が割り当てられていることがわかりました。私もこれを試しました:

<Button Grid.Row="1" Content="Plan" Command="{Binding PlanCommand}" CommandParameter="{Binding ElementName=timePicker.timePickerViewModel, Path=ValidTime}"/>

<Button Grid.Row="1" Content="Plan" Command="{Binding PlanCommand}" CommandParameter="{Binding ElementName=timePicker, Path=timePickerViewModel.ValidTime}"/>

しかし、これらの作品のどれも。

私の状況の解決策またはベストプラクティスを知っている人はいますか?

4

1 に答える 1