我的应用程序中有一个特定的配色方案,我的LongListSelectors
跳转列表样式与我的配色方案完全匹配,我为JumpList创建了样式,就像这样。
<Style x:Name="LibraryJumpListStyle" TargetType="phone:LongListSelector">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Border Background="#007fb3" Margin="6" toolkit:TiltEffect.IsTiltEnabled="True">
<TextBlock Text="{Binding Key}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" FontSize="48" Margin="12,0,0,0" Foreground="White" VerticalAlignment="Bottom"/>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="LayoutMode" Value="Grid"/>
<Setter Property="GridCellSize" Value="111,111"/>
<Setter Property="Margin" Value="12,6,0,0"/>
</Style>
但是这使得我的所有跳转列表项都包括禁用(我没有任何项目的部分)相同的颜色。我希望禁用的跳转列表项目颜色不同。我理解为此我需要制作自己的BackgroundConverter。但问题是我不知道从哪里开始或如何。我需要通过哪些参数。我知道如何使用转换器工作并自己编写了一些转换器。但在这里,我不知道。我搜索过,但没有找到任何示例代码,我可以将其用作自定义BackgroundConverter的基础。有人可以帮忙吗?
答案 0 :(得分:0)
Hey KasunKV你考虑过隐藏空组吗?像这样,
<phone:LongListSelector x:Name="accounts_ls" IsGroupingEnabled="True" HideEmptyGroups="true"/>
如果你已经设置了禁用的颜色,那么看看这个;这里重复的代码太多了:
Change-the-background-of-a-border-with-converter
如果您正在为组使用GroupKeyList,那么您的IsPair将需要检查组的大小,并在大小为空(0)时返回一种颜色,而当大小为空时返回另一种颜色。
答案 1 :(得分:0)
使用此功能。
using Windows.UI;
using Windows.UI.Xaml.Media;
public class ColorResolver : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return GetColorFromHexa((string) value));
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
private SolidColorBrush GetColorFromHexa(string hexaColor)
{
return new SolidColorBrush(
Color.FromArgb(
255,
Convert.ToByte(hexaColor.Substring(1, 2), 16),
Convert.ToByte(hexaColor.Substring(3, 2), 16),
Convert.ToByte(hexaColor.Substring(5, 2), 16)
)
);
}
}
将您想要应用的颜色绑定到边框。
<Border Background="{Binding MyColorProperty, Converter={StaticResource MyColorConverter}}" Margin="6" toolkit:TiltEffect.IsTiltEnabled="True">
<TextBlock Text="{Binding Key}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" FontSize="48" Margin="12,0,0,0" Foreground="White" VerticalAlignment="Bottom"/>
</Border>
这是一个WinRT实现。只需用适当的WP8方法替换GetColorFromHexa()方法来转换颜色。从转换器中分离方法,这样你就可以重新使用它。而已! :)