나는 왜 이것이 작동하지 않는지 알아낼 수 없다. 나는 다음과 같습니다 XAML의 단순화 된 부분이있어 내에서 MainPage.xaml에 대한 코드 숨김에서Silverlight의 ObservableCollection에 ItemsContol.ItemsSource를 선언적으로 바인딩 할 수 있습니까?
<UserControl x:Class="Foo.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">
<Grid x:Name="LayoutRoot">
<ScrollViewer VerticalAlignment="Stretch"
Background="Black"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" >
<ItemsControl x:Name="PictureItemsControl"
ItemsSource="{Binding Pics}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding Location}"
Height="200"
Width="200"
Stretch="UniformToFill" />
<TextBlock FontFamily="Verdana"
FontSize="16"
Foreground="White"
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</UserControl>
을,이 있습니다
namespace Foo
{
public partial class MainPage : UserControl
{
public FooViewModel viewModel;
public MainPage()
{
InitializeComponent();
viewModel = new FooViewModel();
this.DataContext = viewModel;
}
}
}
을 그리고 내 뷰 모델은 다음과 같습니다
namespace Foo
{
public class FooViewModel:INotifyPropertyChanged
{
public ObservableCollection<Pic> Pics;
public FooViewModel()
{
Pics = new ObservableCollection<Pic>();
Pic.GetPics(Pics);
}
//More code here...
}
}
그리고 Pic는 일부 공용 속성과 관찰 가능한 컬렉션을 테스트 데이터로 채우는 정적 메서드가있는 단순한 클래스입니다. 문제는 내가 어떤 내 MainPage 생성자에이 줄을 추가하지 않는 한 내 ItemsControl을에서 발생하는 바인딩 보이지 않아요 것입니다 :
PictureItemsControl.ItemsSource = viewModel.Pics;
내가 그 바인딩 작업을 수행합니다. 그러나 이것은 나에게 맞는 것 같지 않습니다. 선언적 바인딩에서 뭔가를 놓치고 있습니까?
고마워! 나는 그것이 쉬운 일이되어야한다고 생각하고 나는 문서에서 그것을 간과해야만한다. – Raumornie