我想使用的ObservableCollection從對象數據綁定到XAML視圖: 我有具有屬性的類:C#WPF的ObservableCollection綁定到XAML
public ObservableCollection<Roll> RollList = new ObservableCollection<Roll>();
而且一些方法修改該集合(基本方法這增加了新的條目),像這樣:
RollList.Add(roll); //roll is and Roll class object bellow
下面是我在收集使用捲筒紙類:
class Roll : INotifyPropertyChanged
{
private List<int> _hitList;
public List<int> HitList
{
get { return _hitList; }
set { _hitList = value; OnPropertyChanged("HitList"); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
public class ListToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
List<int> list = value as List<int>;
return String.Join("", list.ToArray());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string list = value as string;
return list.Split(' ').Select(n => int.Parse(n)).ToList();
}
}
現在在我的主窗口類中實例化我的類,它構造上面的ObservableCollection對象並用數據填充它;
我像我這樣將我的集合綁定到DataContex;
DataContext = MyCoolClass; //MyCoolClass has ObservableCollection<Roll> RollList inside of it
而且過去的事我什麼我做的:
<Window.Resources>
<local:ListToStringConverter x:Key="ListToStringConverter" />
</Window.Resources>
<ListBox
Height="Auto"
Width="Auto"
Name="RollList"
ItemsSource="{Binding RollList, Converter={StaticResource ListToStringConverter}}"
/>
在列表框中沒有得到填充數據。我知道RollList對象充滿了數據,因爲我是在監視窗口,如果我指定列表框項目源manualy:
RollList.ItemsSource = ConvertedCollection;
它的工作原理和列表框用數據填充我wan't,但我想要將其綁定到xaml中;
PS。我是C#和WPF的新手。
你的轉換器是廢話,它使用列表它應該使用列表項目。我複製了你的情況。第一:不要使用Converter,因爲它會返回一個新的集合,而不是您的可觀察對象。第二@Chris_Eelmaa是對的,使用財產而不是公共領域! –
Samuel