WPF日历取消选择LostFocus上的选定日期

时间:2018-03-18 07:25:31

标签: c# wpf xaml

我在我的WPF项目中添加了一个日历控件,如下所示;

<Calendar x:Name="DatesCalendar" SelectionMode="SingleRange" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" Margin="0,10" VerticalAlignment="Center" />

这个想法是当用户选择一系列日期并点击搜索按钮时,我从数据库中获取该范围内的条目。在用户单击搜索按钮时,将取消选择日历日期。我希望当日历失去焦点时,所选的最后日期保持选中状态。

1 个答案:

答案 0 :(得分:0)

我读到了这个问题的可能答案here。为了完整起见,我复制了那里提供的信息:

Calendar.SelectedDates只读属性。因此,您无法在Binding

中为XAML设置System.Windows.Interactivity.dll

但是,你可以这样做:

1)将Microsoft.Expression.Interactions.dll添加到项目参考

2)将namespace添加到项目参考

3)将以下`xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"` `xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"` 前缀添加到 XAML

<sdk:Calendar Name="Cal" SelectionMode="MultipleRange" >
     <i:Interaction.Triggers>
         <i:EventTrigger EventName="SelectedDatesChanged">
             <i:InvokeCommandAction Command="{Binding SelectionCommand}"
                                    CommandParameter="{Binding SelectedDates, ElementName=Cal}"/>
        </i:EventTrigger>
     </i:Interaction.Triggers>
</sdk:Calendar>`

4) XAML

public class ViewModel
{
    public ViewModel()
    {
       this.SelectionCommand = new DelegateCommand<object>(this.SelectionChanges );
    }

    public ICommand SelectionCommand { get; private set; }

    private void SelectionChanges(object sender)
    {
             SelectedDatesCollection dates = sender as SelectedDatesCollection;
    } 
}

5) ViewModel

myDropzone.emit("addedfile", images[i]);
myDropzone.emit("thumbnail", images[i], "/Images/Ads/");
myDropzone.emit("complete", images[i]);
myDropzone.files.push(images[i]); // added this line

我自己没有测试过。它对你有帮助吗?此答案顶部的链接中有更多信息。