:::::::::: ObservableCollection ::::::::::
ObservableCollection<Friend> Friends = new ObservableCollection<Friend> ( );
:::::::::: InitializeFriends ::::::::::
private void InitializeFriends ( )
{
JsonObject _JsonObject = Process . FacebookClient . Get ( "/me/friends" ) as JsonObject;
if ( _JsonObject != null )
{
JsonArray _JsonArray = _JsonObject [ "data" ] as JsonArray;
foreach ( JsonObject Friend in _JsonArray )
{
Friends . Add ( new Friend ( ) { Name = Friend [ "name" ] . ToString ( ) } );
}
}
}
::::::::::朋友::::::::::
public class Friend
{
public string Name { get; set; }
public Conversation Chat { get; set; }
public BitmapImage Image { get; set; }
}
:::::::::: ListView ::::::::::
<ListView Name="Panel"
Width="Auto"
Margin="0,200,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="{x:Null}"
BorderThickness="0"
ItemsSource="{Binding Path=Friends,
Mode=TwoWay}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectionMode="Single">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource hiddenStyle}">
<GridViewColumn Width="200" DisplayMemberBinding="{Binding Path=Name}" />
<GridViewColumn Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Image Width="30"
Height="30"
Source="{Binding Path=Image}" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
列表视图不绑定可能绑定但不更新?!!!
有一些错误
答案 0 :(得分:3)
您的Friend
类需要实现INotifyPropertyChanged接口,以便WPF通知何时对该属性进行了更改。
答案 1 :(得分:2)
当您遇到XAML绑定问题时,首先要做的是在visual studio下运行您的程序,并在输出窗口中查找提及XAML或Bindings的任何错误或警告。如果出现问题,可能会出现在那里。
您可以通过从主菜单中选择View-&gt; Output(或键入Ctrl + W,O)来打开输出窗口。如果您没有看到任何内容,请在&#34;显示输出来自&#34;中选择调试。组合框。
如果您仍然没有看到任何内容,则可能需要更改WPF跟踪级别。您可以通过从主菜单中选择“调试”并选择“选项和设置...”来完成此操作。展开Debugging节点并选择“Output Window”。现在,在右侧窗格中,在“#WPF跟踪设置”中设置“数据绑定”值。至少警告。下次在VS下运行应用程序时,您应该在输出窗口中看到一些信息。
如果您仍然没有获得足够的信息,可以通过将System.Diagnostics名称空间添加到XAML文件来更改XAML中的跟踪级别(.Net 3.5及更高版本):
xmlns:diagnostics=”clr-namespace:System.Diagnostics;assembly=WindowsBase”
并在感兴趣的绑定中设置跟踪级别,如下所示:
<ListView Name="Panel"
Width="Auto"
Margin="0,200,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="{x:Null}"
BorderThickness="0"
ItemsSource="{Binding Path=Friends,
Mode=TwoWay,
diagnostics:PresentationTraceSources.TraceLevel=High}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectionMode="Single">
答案 2 :(得分:1)
您的Friends
收藏品需要作为公共财产公开,即:
private readonly ObservableCollection<Friend> _friends = new ObservableCollection<Friend>();
public ObservableCollection<Friend> Friends { get { return _friends; } }
答案 3 :(得分:0)
如果你的datacontext是正确的,你的绑定应该有效。顺便说一句,你只需要Mode = OneWay
<ListView Name="Panel" ItemsSource="{Binding Path=Friends, Mode=OneWay}" />
所以你应该首先检查你的DataContext。最简单的方法是使用Snoop。您还可以检查visual studio输出窗口以查看绑定错误
答案 4 :(得分:0)
请将此属性添加到XAML窗口:
DataContext="{Binding RelativeSource={RelativeSource Self}}">