使用WPF和MVVM根据选择表单组合框设置当前日期
我正试图找到一种方法来获取当前日期,并仅当状态设置为“非活动”时才将该值设置为“已完成打开”。如果状态设置为“活动”,则我希望已完成打开为空。我认为这可以通过使用触发事件来实现。我还以MVVM格式编写了此应用程序使用WPF和MVVM根据选择表单组合框设置当前日期,wpf,mvvm,Wpf,Mvvm,我正试图找到一种方法来获取当前日期,并仅当状态设置为“非活动”时才将该值设置为“已完成打开”。如果状态设置为“活动”,则我希望已完成打开为空。我认为这可以通过使用触发事件来实现。我还以MVVM格式编写了此应用程序 <telerik:RadGridView x:Name="dgRad" Grid.Column="0" Grid.Row="1"> <telerik:RadGridView.Columns> <telerik:GridViewDataC
<telerik:RadGridView x:Name="dgRad" Grid.Column="0" Grid.Row="1">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Completed On"
Width="Auto"
DataMemberBinding="{Binding EndDate, Mode=OneWay}" />
<telerik:GridViewDataColumn Header="Status"
DataMemberBinding="{Binding Status, Mode=TwoWay}"
Width="Auto" IsReadOnly="False"
IsEnabled="True" IsVisible="True">
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<ComboBox Text="{Binding Path=Status, Mode=TwoWay}">
<ComboBoxItem>Active</ComboBoxItem>
<ComboBoxItem>Inactive</ComboBoxItem>
</ComboBox>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:RadGridView.Columns>
活跃的
不活跃的
这是您希望在视图模型级别而不是在XAML中使用的逻辑
根据您可能使用的框架的类型,有不同的方法来检测值的变化,但它看起来是这样的:
this.NotifyPropertyChanged += (o, e) => {
if (e.PropertyName == "Status")
{
if (this.Status == "Active") EndDate = null; //nullable DateTime?
else if (this.Status == "Inactive") EndDate = DateTime.Now;
}
};
在MVVM中,视图只执行与向用户显示内容相关的操作。逻辑属于视图模型。请注意,此代码与网格中显示的行项目对象相关,而不是与外部视图模型相关
希望这能帮助你开始。这应该会有帮助
public class YourViewModel
{
public string Status{get;
set{
...
RaisePropertyChange("EndDate");
}
}
public string EndDate{
get{
return Status=="Active" ? "Completed On" + DateTime.Now : "";
}
}
}
我如何使用Catel实现这一点我不熟悉Catel