Как динамически передать изображение кнопке в C#
У меня есть сценарий, в котором я хотел бы, чтобы пользователь просмотрел несколько кнопок в картах Bing в приложении wp7. Я использовал maplayer для создания кластера кнопок, но я не мог динамически добавить изображение к этой кнопке в самом файле cs. Кстати, я не использовал управление кнопками в xaml. Я просто добавляю объект канцелярской кнопки в слой карты во время цикла.
Вот мой код:
maplayer layer = new maplayer();
watcher.start();
for (int i = 0; i < lst.count; i++)
{
Pushpin mypin = new Pushpin();
watcher.Position.Location.Latitude = Convert.ToDouble(lst[i].Latitude);
watcher.Position.Location.Longitude=Convert.ToDouble(lst[i].Longitude);
}
GeoCoordinate geo = new GeoCoordinate(watcher.Position.Location.Latitude, watcher.Position.Location.Longitude);
mypin.Location = geo;
mypin.Background = new SolidColorBrush(Colors.Gray);
mypin.Foreground = new SolidColorBrush(Colors.White);
mypin.Content = "My location";
layer.AddChild(mypin, mypin.Location);
}
map1.SetView(watcher.Position.Location, Status == true ? 5.0 : 3.0);
map1.Children.Add(layer);
watcher.stop();
Я также попытался использовать свойство кисти изображения, чтобы обеспечить источник изображения для кнопки, но сама кнопка становится невидимой.
как это:
ImageBrush ib = new ImageBrush();
ib.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri(@"Images/push.png", UriKind.Relative));
mypin.Background = ib;
Пожалуйста помоги мне с этим. Мне нужно, чтобы это было сделано без изменения / добавления таблички данных в канцелярскую кнопку со стороны xaml.
1 ответ
Эта проблема описана в MSDN на странице " Работа с кнопками". Вот пример, где изображения добавляются непосредственно в слой на карте:
namespace WindowsPhoneApplication1
{
public partial class MainPage : PhoneApplicationPage
{
MapLayer imageLayer;
public MainPage()
{
InitializeComponent();
//Create a layer to contain the pushpin images.
imageLayer = new MapLayer();
map1.Children.Add(imageLayer);
}
private GeoCoordinate mapCenter;
private void button1_Click(object sender, RoutedEventArgs e)
{
// Retrieve the center of the current map view.
mapCenter = map1.Center;
// Define the image to use as the pushpin icon.
Image pinImage = new Image();
//Define the URI location of the image.
pinImage.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("bluepushpin.png", UriKind.Relative));
//Define the image display properties.
pinImage.Opacity = 0.8;
pinImage.Stretch = System.Windows.Media.Stretch.None;
// Put the image at the center of the view.
PositionOrigin position = PositionOrigin.Center;
imageLayer.AddChild(pinImage, mapCenter, position);
}
}
}