我应该在Windows Phone 7中使用什么样的控件来进行“明星”控制

时间:2011-11-29 21:33:31

标签: windows-phone-7 binding

我在列表中显示数据库中的一些项目,我希望用户能够将其中一些项目标记为收藏夹。最好的方法是显示一些星形图标供用户点击,然后变成稍微不同的星星,表示该项目现在是最喜欢的。我应该为那些星星使用什么控件?我可以将它们绑定到项目的某个布尔属性吗?

3 个答案:

答案 0 :(得分:7)

您也可以使用矢量图形来实现此目的,而无需使用png图标。

我创建了这种风格,基本上只适用于CheckBox,但我认为它只适用于ToggleButton,只需将TargetTypeCheckBox更改为{ {1}}。

通过将ToggleButtonIsChecked的{​​{1}}设置为CheckBox,明星将会充满手机的强调色。

风格

ToggleButton

应用样式

True

看起来如何

enter image description here

答案 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工具包的星形控件列表。