2014-11-20 99 views
1

我遇到了一些麻煩,通過Windows Phone綁定和一系列圖像來解決問題。假設我的平均評分在1 - 10之間,而且我有5個圖像,例如星級評分系統。現在我想顯示該圖像的平均評分。每顆恆星的價值爲2,所以5星填充的平均評分爲10,1.5星填充的平均評分爲3.所以一些將被填充,一些空的或一半填滿。Windows Phone高級綁定

我的XAML的樣子:

<Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="150,-20,0,0" Source="/Images/icon_star.png" Stretch="None"/> 
<Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="166,-20,0,0" Source="/Images/icon_star.png" Stretch="None"/> 
<Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="182,-20,0,0" Source="/Images/icon_star_half.png" Stretch="None"/> 
<Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="198,-20,0,0" Source="/Images/icon_star_empty.png" Stretch="None"/> 
<Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="214,-20,0,0" Source="/Images/icon_star_empty.png" Stretch="None"/> 

這是我的模型:

​​

在Android中很容易的RatingBar Widget或使用列表適配器填充相似圖片:

Map<Integer, ImageView> vars = new HashMap<Integer, ImageView>(); 
    vars.put(1, view.star_1); 
    vars.put(2, view.star_2); 
    vars.put(3, view.star_3); 
    vars.put(4, view.star_4); 
    vars.put(5, view.star_5); 

while(i <= 5) { 
     if(i <= rate) { 
       ImageView star = vars.get(i); 
       star.setImageDrawable(getContext().getResources().getDrawable(R.drawable.icon_star)); 
     } else { 
      if(rate % 2 != 0 && i == (int)(Math.round(rate))) { 
       ImageView star = vars.get(i); 
       star.setImageDrawable(getContext().getResources().getDrawable(R.drawable.icon_star_half)); 
      } else { 
       ImageView star = vars.get(i); 
       star.setImageDrawable(getContext().getResources().getDrawable(R.drawable.icon_star_dis)); 
      } 
     } 
     i++; 
    } 

在iOS中,我使用了圖像和IBOutletcollection和cellForRowAtIndexPath。

對於Windows我使用綁定,但我無法讓我的頭圍繞此。

+0

這http://www.codeproject.com/Articles/189242/XAML-Masking-for-WPF-Silverlight-and-WP-Rating-co – 2014-11-20 21:19:29

+0

如何限制這些星星僅返回.5,1,1.5,2,2.5等? – 2014-11-20 21:26:50

+0

您可以使用十個不同的BitmapSources,其中第一個顯示五個空星,最後顯示五個滿星。現在您編寫一個綁定轉換器,將double值(1和10之間)轉換爲相應的BitmapImage。 – Clemens 2014-11-20 21:55:55

回答

0

此操作對於簡單綁定而言太複雜。

你想要做的是創建一個「評級」用戶控件。然後添加一個Value依賴項屬性。這意味着你可以這樣做:

<local:Rating Value="{Binding rating}"/> 

本身會處理用戶輸入,約束值.5倍數的控制等