0

私はクラスのニュースを持っています

public class News : ObservableCollection<New>
{
    public News()
        : base()
    {

    }
}

Aクラス New

public class New : INotifyPropertyChanged
{
         public PhotoAttachments Photo
    {
        get
        { 
            return photoAttachments;
        }
        set
        {
            photoAttachments = value;
            OnPropertyChanged("Photo");
        }
    }
   // some fields such as date, text, id, sourceName etc
 public event PropertyChangedEventHandler PropertyChanged;
  protected void OnPropertyChanged(string info)
{//realisation of method}
 public PhotoAttachments photoAttachments = new PhotoAttachments(); // it is a collection, such as News, but it contains objects of class PhotoAttachment, which have property with string url to photo
}

InitializeComponent();私が書いた後 this.listBox.ItemsSource = NewsList; 、クラスNewのオブジェクトを含むリストボックスがあります。これらのリストボックスで、別のリストボックスを作成し、PhotoAttachments コレクションで埋めようとしました。ここで問題が発生しました。写真付きのリストボックスに写真が表示されません(ただし、存在します)。XAML は次のとおりです。

// I can select different      <local:NewsTemplateSelector.Photos>
//style of listbox               <DataTemplate>
//using  NewsTemplateSelector     <Border BorderBrush="Red" BorderThickness="2"  Width="400" Height="300" Margin="10">
                                        <StackPanel Orientation="Horizontal" Width="400" Height="300">
                                            <Image Source="{Binding SourceImage}" Height="75" Width="75" Margin="0,-225,0,0" />
                                            <Canvas Width="400">
                                                <TextBlock Text="{Binding SourceName}" Foreground="Black" FontSize="25" TextWrapping="Wrap" Height="65" Width="326" d:LayoutOverrides="VerticalAlignment, Height" />
                                                <ListBox Name="photoListbox" ItemsSource="{Binding Photo}"  Height="229" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="326" Canvas.Top="69">
                                                    <Image  Source="{Binding Big}" Height="200" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="400" />
                                                </ListBox>
                                            </Canvas>
                                        </StackPanel>
                                    </Border>
                                </DataTemplate>
                            </local:NewsTemplateSelector.Photos>

PhotoAttachment クラス:

    public class PhotoAttachment : INotifyPropertyChanged
{
    private string ownerId;
    public string OwnerId { get { return ownerId; } set { ownerId = value; OnPropertyChanged("OwnerId"); } }
    private string small;
    public string Small { get { return small; } set { small = value; OnPropertyChanged("Small"); } }
    private string big;
    public string Big { get { return big; } set { big = value; OnPropertyChanged("Big"); } }
    public PhotoAttachment(string ownId, string small, string big)
    {
        ownerId = ownId;
        this.small = small;
        this.big = big;
    }
    public PhotoAttachment() { }
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string info)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(info));
        }
    }

}
4

1 に答える 1

1

photoListView の XAML に ItemTemplate がないことに気付きました

これらの行に沿った何かがうまくいくはずです:

        <ListBox.ItemTemplate>
            <DataTemplate>
                <Image  Source="{Binding Big}" Height="200" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="400" />
            </DataTemplate>
        </ListBox.ItemTemplate>
于 2012-12-02T06:04:18.120 に答える