【发布时间】:2019-05-31 01:23:52
【问题描述】:
我有一个 textBlock,它在 text 属性中包含一个日期。 现在,我想根据它的 text 属性中的星期几设置该 textBlock 的前景色。
这可以纯粹在 XAML 中完成吗?
谢谢
【问题讨论】:
-
你需要写一个转换器,我认为,将星期几转换成颜色。
-
您需要使用该信息编辑您的问题。
我有一个 textBlock,它在 text 属性中包含一个日期。 现在,我想根据它的 text 属性中的星期几设置该 textBlock 的前景色。
这可以纯粹在 XAML 中完成吗?
谢谢
【问题讨论】:
不是纯XAML,您需要创建一个实现IValueConverter的类,然后通过在XAML中引用它,您可以将TextBlock颜色绑定到日期属性,该属性将转换为@987654326 @通过转换器。
有关ValueConverter的更多信息请看这里:
https://www.codeproject.com/Tips/868163/%2FTips%2F868163%2FIValueConverter-Example-and-Usage-in-WPF
【讨论】:
IValueConverter 的解决方案将是可行的方法。无论如何,这似乎是根据 MVVM 哲学处理转换的正确解决方案,对吗?我对 C# 和所有 MVVM 的编程非常陌生!
现在,我想在它的 text 属性中根据星期几设置该 textBlock 的前景色
纯xaml:
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="Text" Value="Monday"><!-- You will need to do this for every day of the week-->
<Setter Property="Foreground" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
此外,如果您使用Runs 分解日期,则可以为运行分配样式,如下所示:
<TextBlock>
<Run Text="{Binding Today}"/>
<Run Text="{Binding Today.DayOfWeek, Mode=OneWay}"/><!-- This has to be one way as the Property DayOfWeek is readonly -->
</TextBlock>
然后在资源中使用这个:
<Style TargetType="{x:Type Run}">
<Style.Triggers>
<Trigger Property="Text" Value="Friday">
<Setter Property="Foreground" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
【讨论】:
DayOfWeekin 代码的解决方案,但没有找到任何东西。否则我会尝试通过转换器来完成,无论如何掌握似乎是一件好事。