2011-07-11 6 views
0

私は質問がある、私はStackPanelを持っていて、これはImageTextBlockが含まれている押出ブレンドでListBoxItemを作成しました。howtoは、式ブレンドのListBoxItemsで動作しますか?

問題は、イメージとテキストブロックにアクセスするためのプロパティを設定する方法がわかりません。 新しいアイテムを作成できますが、イメージのURLとテキストを設定する方法はありますか?

+0

XAMLとバインディングするデータ構造を提供できる場合は、より効果的に役立つでしょう。 – kanchirk

答えて

1

XAMLはデータソースのプロパティにバインドする必要があり、ListBoxのItemsSourceを設定する必要があります。表示されたスクリーンショットを生成するxamlと.csの下に追加します。私はまた、データを含む単純なクラスを含んでいます。メインページのため

 <ListBox x:Name="myItems"> 
      <ListBox.ItemTemplate> 
       <DataTemplate > 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="{Binding image}" Margin="5" /> 
         <TextBlock Text="{Binding myName}" VerticalAlignment="Center" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

.csファイルが含まれている必要がありますUIことを確実にするために、私はINotifyPropertyChangedの実装した

public class dataItem : INotifyPropertyChanged 
{ 

    private string _name = ""; 
    public string myName 
    { 
     get 
     { 
      return _name; 
     } 
     set 
     { 
      if (value != _name) 
      { 
       _name = value; 
       NotifyPropertyChanged("myName"); 
      } 
     } 
    } 

    private string _image = ""; 
    public string image 
    { 
     get 
     { 
      return _image; 
     } 
     set 
     { 
      if (_image != value) 
       _image = value; 
      NotifyPropertyChanged("image"); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    public void NotifyPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

public partial class MainPage : PhoneApplicationPage 
{ 
    ObservableCollection<dataItem> items; 

    public MainPage() 
    { 
     InitializeComponent(); 
     items = new ObservableCollection<dataItem>(); 
     addItems(); 
     this.myItems.ItemsSource = items; 
    } 

    private void addItems() 
    { 
     items.Add(new dataItem() { myName = "Jason", image = "1.png" }); 
     items.Add(new dataItem() { myName = "Joanne", image = "2.png" }); 
    } 
} 

マイデータオブジェクトは、データ項目と呼ばれ、そのように見えるさ新しい項目がデータソース(dataItem)に追加されると、更新されます。画像はのコンテンツとして追加する必要があり、にコピーする必要があります。これらの画像が確実にデバイスに保存されるようにコピーしてください。

Phone screen grab

私はこれが役に立てば幸い:完成アプリは次のようになります。

Jason。

関連する問題