我在列表中显示数据库中的一些项目,我希望用户能够将其中一些项目标记为收藏夹。最好的方法是显示一些星形图标供用户点击,然后变成稍微不同的星星,表示该项目现在是最喜欢的。我应该为那些星星使用什么控件?我可以将它们绑定到项目的某个布尔属性吗?
答案 0 :(得分:7)
您也可以使用矢量图形来实现此目的,而无需使用png图标。
我创建了这种风格,基本上只适用于CheckBox
,但我认为它只适用于ToggleButton
,只需将TargetType
从CheckBox
更改为{ {1}}。
通过将ToggleButton
或IsChecked
的{{1}}设置为CheckBox
,明星将会充满手机的强调色。
风格
ToggleButton
应用样式
True
看起来如何
答案 1 :(得分:5)
您可以使用ToggleButton执行此操作。在项目中保留2星图像,一个用于单击,另一个用于未单击。您可以使用数据绑定和IsChecked
属性在2个图像之间切换。
XAML:
<ToggleButton IsChecked="{Binding IsFavorited, Mode=TwoWay}">
<ToggleButton.Content>
<Image Source="{Binding FavoriteImage}" />
</ToggleButton.Content>
</ToggleButton>
C#:
Image ClickedImage = new Image() {
Source = new BitmapImage(new Uri("/clicked.png", UriKind.Relative));
};
Image NotClickedImage = new Image() {
Source = new BitmapImage(new Uri("/not_clicked.png", UriKind.Relative));
};
bool _isFavorited = false;
Image _favoriteImage = NotClickedImage;
public bool IsFavorited
{
get { return _isFavorited; }
set
{
if( _isFavorited != value ) {
_isFavorited = value;
NotifyPropertyChanged( "IsFavorite" );
FavoriteImage = _isFavorited ? ClickedImage : NotClickedImage;
}
}
}
public Image FavoriteImage
{
get { return _favoriteImage; }
private set
{
if( _favoriteImage != value ) {
_favoriteImage = value;
NotifyPropertyChanged( "FavoriteImage" );
}
}
}
包含后面代码的类需要实现INotifyPropertyChanged
接口。
答案 2 :(得分:0)
请参阅here以获取可用于Windows Phone的silverlight工具包的星形控件列表。