Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过命令参数wpf mvvm传递参数的日期选择器_C#_Wpf_Mvvm_Prism - Fatal编程技术网

C# 通过命令参数wpf mvvm传递参数的日期选择器

C# 通过命令参数wpf mvvm传递参数的日期选择器,c#,wpf,mvvm,prism,C#,Wpf,Mvvm,Prism,我有一个使用Prism的WPF MVVM项目,我有一个Datepicker,它绑定到viewmodel上的Datetime属性。我想使用SelectedDateChanged事件获取更改的值(无代码隐藏)。我知道我在Datepicker也被绑定的属性中得到了值更改,但我想尝试另一种方法。到目前为止,我已经在xaml中组装了datepicker <DatePicker Name="dpName" Grid.Row="1" Grid.Column="4" VerticalAlignment="

我有一个使用
Prism
的WPF MVVM项目,我有一个
Datepicker
,它绑定到viewmodel上的
Datetime
属性。我想使用
SelectedDateChanged
事件获取更改的值(无代码隐藏)。我知道我在
Datepicker
也被绑定的属性中得到了值更改,但我想尝试另一种方法。到目前为止,我已经在xaml中组装了datepicker

<DatePicker Name="dpName" Grid.Row="1" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Width="200" SelectedDate="{Binding Class.Date}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectedDateChanged">
                        <i:InvokeCommandAction Command="{Binding ath=TestMeCommand}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </DatePicker>
在ctor中:

TestDateCommand = new DelegateCommand<object>(TestPateparam);
我的问题是如何将所选日期作为参数传递给函数。到目前为止,我已尝试将
InvokeCommandAction
替换为

<i:InvokeCommandAction Command="{Binding Path=TestDateCommand}" CommandParameter="Binding ElementName=DPLoanDetailsAsOfDate, Path=SelectedDate}"  />

还有c#函数

public DelegateCommand TestDateCommand{get;set;}
TestDateCommand=新的DelegateCommand(TestPateparam);
私有void TestPateparam(对象dt)
{
int检验=0;
}

如果您使用的是Prism 6.1.1-pre2,则可以通过Prism的InvokeCommandAction轻松完成此操作:

    <DatePicker  Grid.Row="1" Margin="5" >
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectedDateChanged">
                <prism:InvokeCommandAction Command="{Binding SelectedCommand}" TriggerParameterPath="AddedItems" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </DatePicker>


您的命令参数绑定缺少前导{字符。不确定这是否是问题所在。如果您使用命令执行验证,则说明您做错了。请使用INotifyDataErrorInfo进行验证。调试器是否转到
TestPatParam()
?如果是,请查看
dt
有什么功能。您不能使用InvokeCommandAction。请参阅安装程序,Ayyappan Subramanian调试器确实转到TestDateParam,但我没有将日期作为参数获取“Binding ElementName=datePickerName,Path=SelectedDate}”,我在本例中将参数设置为对象而不是日期时间
<i:InvokeCommandAction Command="{Binding Path=TestDateCommand}" CommandParameter="Binding ElementName=DPLoanDetailsAsOfDate, Path=SelectedDate}"  />
  public DelegateCommand<object> TestDateCommand { get; set; }
  TestDateCommand = new DelegateCommand<object>(TestPateparam);

      private void TestPateparam(object dt)
    {
        int test = 0;
    }
    <DatePicker  Grid.Row="1" Margin="5" >
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectedDateChanged">
                <prism:InvokeCommandAction Command="{Binding SelectedCommand}" TriggerParameterPath="AddedItems" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </DatePicker>