나는 MultiBinding
및 다중 값 변환기를 사용하여이 작업을 수행 할 것 :
변환기 :
public class DateEqualsConverter : IMultiValueConverter
{
public object Convert(object[] values,
Type targetType,
object parameter,
CultureInfo culture)
{
return System.Convert.ToDateTime(values[0])
.Equals(System.Convert.ToDateTime(values[1]));
}
public object[] ConvertBack(object value,
Type[] targetTypes,
object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
창 자원 (아마도이 대신 UserControl.Resources
입니다, 당신은 말하지 않았다) :
<Window.Resources>
<local:DateEqualsConverter x:Key="DateEquals" />
</Window.Resources>
여기 Style
에있는 DataTrigger
입니다. SDate
을 비교하는 viewmodel 속성의 이름을 알지 못하므로 그냥 GreenDate
이라고 부릅니다.
OTOH "변수가 이미 내 datacontent의 일부입니다."는 속성이 이미 viewmodel에 정의되어 있고 viewmodel이 DataContext
임을 의미합니다. 그것은 하나일지도 모른다. 알려줘.
<DataTrigger
Value="True"
>
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DateEquals}">
<MultiBinding.Bindings>
<Binding Path="SDate" />
<Binding Path="GreenDate" />
</MultiBinding.Bindings>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Green" />
</DataTrigger>
당신은 @Mohit이 행해져 Yout 포인트와 같은 – Mohit
에 대한 스타일 선택기를 작성해야, 당신은 실제로 DataTrigger.Value''아무것도 바인딩 할 수 없습니다. 멀티 바인드에 바인딩 된 두 값이 참이면 true를 반환하는 다중 값 변환기와 함께 멀티 바인드를 사용해야합니다. –
색상을 날짜에 바인딩하는 것이 더 좋을 수도 있고 그 날짜를 가져 와서 브러시/색상을 반환하는 IValueConverter를 추가하는 것이 더 편리 할 수도 있습니다. – 0x4f3759df