我應該這樣做有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>
而這裏的DataTrigger
在Style
。我不知道你正在比較SDate
的viewmodel屬性的名稱,所以我只是把它叫做GreenDate
。
OTOH我猜「變量已經是我的datacontent的一部分」是指該財產是在您的視圖模型已經定義,和你的視圖模型是你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>
你必須寫一個StyleSelector爲同一 – Mohit
作爲@Mohit指出YOUT,你不能真正綁定什麼'DataTrigger.Value'。你應該做的是使用多值轉換器的多重綁定,如果綁定到多重綁定的兩個值爲真,則返回true。 –
你可能會更好結合顏色的日期和添加的IValueConverter這需要該日期,並返回一個刷子/彩色 – 0x4f3759df