■35070 / inTopicNo.2) |
Re[1]: WPF ListBoxのItemSourceへバインド |
□投稿者/ Z (2回)-(2009/04/19(Sun) 14:40:01)
|
申し訳ありません。自己レスです。
ListではなくObservableCollectionを使用することで解決しました。
この方法でOKでしょうか?
■No35069 (Z さん) に返信 > お世話になっています。今日はWPFの勉強をしているのですが、つまづいてしまいました。 > ListBoxのItemSourceにクラスのプロパティをバインドして表示するだけなのですが… > 起動直後は上手く動きます。ただし、「更新」ボタンを押下するとプロパティ内容が変化し、 > それに応じてListBoxの表示も変わるようにやってみたのですが… > プロパティ自体は変わります。ただし、ListBoxの表示が変わりません。 > ご教授して頂けないでしょうか。よろしくお願いします。 > > Window1.xaml > <Window x:Class="WpfApplication1.Window1" > xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" > xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > Title="Window1" Height="300" Width="300"> > <Grid> > <ListBox Margin="42,12,34,75" Name="listBox1" ItemsSource="{Binding RndItem}" /> > <Button Height="28" Margin="92,0,84,8" Name="button1" VerticalAlignment="Bottom" Click="button1_Click">更新</Button> > <TextBlock Height="26" Margin="42,0,32,43" Name="textBlock1" VerticalAlignment="Bottom" Text="{Binding Count}" /> > </Grid> > </Window> > > Window1.xaml.cs > public partial class Window1 : Window > { > public Window1() > { > InitializeComponent(); > this.DataContext = new Class1(); > } > private void button1_Click(object sender, RoutedEventArgs e) > { > ((Class1)this.DataContext).NewRndItem(); > } > } > > Class1.cs > class Class1 : INotifyPropertyChanged > { > Random rnd = new Random(); > List<int> lst = new List<int>(); > public List<int> RndItem > { > get > { > lst.Clear(); > int count = rnd.Next(10) + 1; > for (int i = 0; i < count; i++) > { > lst.Add(i); > } > return lst; > } > } > public int Count > { > get > { > return lst.Count; > } > } > public void NewRndItem() > { > OnPropertyChanged("RndItem"); > OnPropertyChanged("Count"); > } > public event PropertyChangedEventHandler PropertyChanged; > void OnPropertyChanged(string propertyName) > { > PropertyChangedEventHandler handler = this.PropertyChanged; > if (handler != null) > handler(this, new PropertyChangedEventArgs(propertyName)); > } > }
|
|