好的,我正在創建的圖像列表(使用列表框),左側是縮略圖,右側是圖像標題。我的XAML設置是這樣的:將XAML DataTemplate中的圖像源綁定到Silverlight 4中的URI
<ListBox HorizontalAlignment="Left" Margin="6,6,0,6" Name="CurrentPhotos" Width="184" SelectionChanged="CurrentPhotos_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Converter={StaticResource FilePathConverter}}" />
<sdk:Label Content="{Binding Title}"></sdk:Label>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我得在App.xaml中定義的FilePathConverter鍵和代碼設置:
public class FilePathConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType == typeof(string))
{
return (value as PhotoSummary).FullThumbPath();
}
else
{
return (value as PhotoSummary).Thumb();
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
有兩個斷點轉換和ConvertBack方法。 ConvertBack永遠不會被觸發(所以沒有例外等),並且在Convert方法中,Thumb正確地返回(字符串輸入是由於某些測試原因而留下的,並且目前還沒有使用,它不會被觸發),並且Thumb擴展方法是this :
public static object Thumb(this PhotoSummary ps)
{
Uri uri = new Uri("http://" + Settings.Host + "/Content/Thumbs/" + ps.Uploaded.Year + "/" + ps.Uploaded.Month + "/" + ps.ID + ".jpg", UriKind.Absolute);
return new BitmapImage(uri);
}
這個被調用,並且Uri被正確構建(測試了幾次)。但是,當我運行該應用程序時,該列表僅包含照片的標題,並且沒有圖像。所有圖像都很小(它們只是大拇指),本地文件,所以它們需要立即加載,因此它也不是加載問題。但它好像沒有圖像標籤那裏。它只顯示照片的標籤。轉換器正在工作,Uri是正確的,根本沒有錯誤,但沒有圖像顯示。
有什麼建議嗎?
您是否嘗試過使用小提琴手,以驗證是否Silverlight是實拍的圖像,如果真的返回的圖像的請求顯示? – MerickOWA
試過了,沒有,沒有請求。我可以看到來自同一應用程序的其他請求(服務調用),它們工作,我可以在提琴手中看到它們,但沒有圖像請求。很奇怪。 –
Hrm奇怪,也許嘗試訂閱圖像上的ImageFailed事件,看看解析Uri時是否有一些問題阻止下載開始。 – MerickOWA