У меня есть пользовательский элемент управления Silverlight, в котором есть элемент управления изображением.Это изображение должно быть установлено другой страницей, которая содержит вышеупомянутый элемент управления, через набор данных связанного списка элементов.В настоящее время изображение не устанавливается при отправке URL-адреса в пользовательский элемент управления.На самом деле ни один код, кроме SetValue(ImageSourceProperty, value);
, кажется, не работает.
XAML в пользовательском элементе управления выглядит следующим образом:
<Grid x:Name="LayoutRoot" Background="Black">
<Image Name="ContentImage"/>
</Grid>
В этом коде у меня установлен DependencyObject для получения URL-адреса изображения и установки источника данных изображения:
public static DependencyProperty ImageSourceProperty =
DependencyProperty.Register("ImageSource", typeof(String), typeof(MediaItemControl), null);
public String ImageSource
{
get { return (String)GetValue(ImageSourceProperty); }
set
{
SetValue(ImageSourceProperty, value);
Dispatcher.BeginInvoke(() => this.ContentImage.Source = new BitmapImage(new Uri(value, UriKind.RelativeOrAbsolute)));
}
}
MainPage.Xaml содержит ссылку на этот пользовательский элемент управления в ItemsTemplate, чей источник данных устанавливается в коде позади списка объектов, у которого есть свойство ImageURL.Этот источник данных правильно установлен в коде позади.Это XAML для главной страницы:
<UserControl x:Class="ExampleSilverlightApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:medc="clr-namespace:ExampleSilverlightApp.Controls" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Name="ItemsControlStackPanel">
<ItemsControl Name="ContentItemControl" Visibility="Visible">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="126" HorizontalAlignment="Center">
<medc:MediaItemControl x:Name="CustomMediaItemControl"
ImageSource="{Binding ImageURL}"
>
</medc:MediaItemControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
У меня проблема в том, что источник изображения не устанавливается на пользовательском элементе управления.Установщик объекта зависимости, кажется, не поражен.Если я помещаю кнопку в элемент управления, который при нажатии устанавливает свойство ImageSource, затем удаляется набор и отображается изображение.Интересно то, что значение ImageSource действительно установлено правильно, но источник данных изображения является нулевым, пока не будет установлен с помощью кнопки.
У кого-нибудь есть идеи относительно того, почему это происходит?