日期选择器触发WPF
以下是错误的,但显示了我正在尝试做的事情。我有一个标签和一个日期选择器。约会时间?绑定可以为null,因此DatePicker可以接收null值 日期时间的绑定?工作正常,但是如果DatePicker具有非null值,我希望标签的前景色(在Xaml中)发生更改。我相信这是通过触发器实现的,但这是我第一次使用触发器日期选择器触发WPF,wpf,triggers,datepicker,Wpf,Triggers,Datepicker,以下是错误的,但显示了我正在尝试做的事情。我有一个标签和一个日期选择器。约会时间?绑定可以为null,因此DatePicker可以接收null值 日期时间的绑定?工作正常,但是如果DatePicker具有非null值,我希望标签的前景色(在Xaml中)发生更改。我相信这是通过触发器实现的,但这是我第一次使用触发器 binding to: public DateTime? NewLeadDateActiveJob <Label Style="{StaticResource LabelS
binding to: public DateTime? NewLeadDateActiveJob
<Label Style="{StaticResource LabelStyle}" Grid.Row="11" Content="New Lead:">
<Label.Triggers>
<Trigger Property="{Binding ElementName=NewLeadDateActiveJobDatePicker, Path=HasValue}">
<Setter Property="Foreground" Value="HotPink"/>
</Trigger>
</Label.Triggers>
</Label>
<DatePicker x:Name="NewLeadDateActiveJobDatePicker" Grid.Row="11" Margin="3" HorizontalAlignment="Left" Grid.Column="1"
SelectedDate="{Binding objActiveJobClass.NewLeadDateActiveJob, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"
Style="{StaticResource DatePickerStyle}"
CalendarStyle="{StaticResource styleCalendar}">
</DatePicker>
绑定到:公共日期时间?NewLeadDateActiveJob
我用IValueConverter解决了这个问题,但我很想知道是否有更好的方法
public class NullableDateTimeToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || value.ToString() == string.Empty)
{
return "Gray";
}
DateTime? dateTime = value as DateTime?;
if (dateTime == null)
{
return "Gray";
}
return "Green";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
您可以使用DataTriggers执行此操作,当然不需要转换器:
<Label Grid.Row="11" Content="New Lead:">
<Label.Style>
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource LabelStyle}">
<Setter Property="Foreground" Value="Green" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=NewLeadDateActiveJobDatePicker, Path=SelectedDate}" Value="{x:Null}">
<Setter Property="Foreground" Value="Gray" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=NewLeadDateActiveJobDatePicker, Path=SelectedDate}" Value="">
<Setter Property="Foreground" Value="Gray" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>