私はWindows Phone 7で作業しています。
Windows Phone 7 の Tiles のように、PhotoChooserTask から選択した画像を ListBox にバインドする必要があります。
次のような設計ファイルがあります。
<ListBox x:Name="lstImages" Height="530" Margin="0,10,0,0"
ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Style="{StaticResource PickerBoxButton}"
x:Name="btnDashboardItems"
Tag="{Binding Name}"
Padding="0" Margin="-18,0,-12,-45" Height="200"
Width="200">
<Button.Template>
<ControlTemplate>
<StackPanel Height="173" Width="173">
<Image Height="173" Width="173"
Source="{Binding Image}" />
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Width="450" Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
そして、私は次のような ImageList というクラスを持っています:
public class ImageList
{
public string Name { get; set; }
public BitmapImage Image { get; set; }
}
そして、私は次のようにリストボックスにバインドしています:
PhotoChooserTask task = new PhotoChooserTask();
task.Completed += new EventHandler<PhotoResult>(task_Completed);
task.Show();
ここで、任意の No of Images を選択できるので、ListBox を取得しました。
Random _Random = new Random();
private void task_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
System.IO.Stream stream = e.ChosenPhoto;
BitmapImage bmp = new BitmapImage();
bmp.CreateOptions = BitmapCreateOptions.None;
bmp.SetSource(stream);
img.Image = bmp;
img.Name = _Random.Next(int.MaxValue).ToString() + ".jpg";
StateUtilities.ImageList.Add(img);
if (StateUtilities.ImageList != null)
{
if (StateUtilities.ImageList.Count > 0)
{
lstImages.ItemsSource = StateUtilities.ImageList;
}
}
}
}
ここで画像をバインドできますが、画像はさまざまなサイズで表示されますが、ボタンと画像タグに固定サイズ (高さと幅) を指定しましたが、異なるサイズ (高さと幅が異なる) で画像を取得しています。その画像を同じサイズでバインドするにはどうすればよいですか?
ありがとう、
アビナッシュ