我在ResourceDictionary中有一个DataTemplate
Path
,我想更改Fill
的{{1}}颜色(可以选择两种颜色),具体取决于来自viewmodel的bool属性。
Path
我认为,我需要使用一些转换器,但不知道如何为它编写XAML代码。像这样的东西?
<DataTemplate x:Key="FileIcon">
<Path Data="M20.8573547,8.0085467..." Fill="#F0F1F3" Width="30" Height="30"/>
</DataTemplate>
答案 0 :(得分:1)
路径不是自己的祖先。如果viewmodel是Path的DataContext,那么传统的绑定就足够了:
<Path
Fill="{Binding MyBoolProperty, Converter={StaticResource BoolToColorHiddenConverter}}"
/>
您也可以跳过转换器并使用Style触发器。请注意,此版本中的默认填充不再设置为属性;如果是,那么public suffix list。
<Path
Data="M20.8573547,8.0085467..."
Width="30"
Height="30"
>
<Path.Style>
<Style TargetType="Path">
<Setter Property="Fill" Value="#F0F1F3" />
<Style.Triggers>
<DataTrigger
Binding="{Binding MyBoolProperty}"
Value="True"
>
<Setter Property="Fill" Value="FluorescentBeige" />
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
答案 1 :(得分:-1)
如果您想使用转换器,可以按照此示例代码制作一个转换器:
1。制作新课程
2. 使用以下命名空间:
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
3. 继承并实施IValueConverter
界面
4. 在Convert
函数中,评估value
参数并返回您想要的相应颜色
示例代码
class BoolToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value == true)
{
// return the color you want
}
else
{
// return the color you want
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}