簡體   English   中英

Windows Phone高級綁定

[英]Windows Phone advanced binding

使用Windows Phone綁定和一系列圖像使事情變得正確時,我遇到了一些麻煩。 假設我的平均評分在1-10之間,並且我有5張圖片(如星級評分系統)。 現在,我要顯示該圖像的平均評分。 每顆星的值為2,所以填充的5顆星的平均評級為10,填充的1.5顆星的平均評級為3。

我的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"/>

這是我的模型:

 public class Comment
{
    public string comment { get; set; }
    public int c_id { get; set; }
    public double rating { get; set; }
    public string created { get; set; }
}

在Android中,使用等級欄小部件或使用列表適配器填充圖像很容易,如下所示:

 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,我使用綁定,但是我無法解決這個問題。

對於簡單的綁定,此操作太復雜了。

您將要做的是創建一個“評分”用戶控件。 然后添加Value依賴項屬性。 這意味着您可以執行以下操作:

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

控件本身將處理用戶輸入,將值限制為0.5的倍數,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM