我有一个ObservableCollection,可以在自定义列表框中查看.我需要列表框根据应用的更改来更新视图,例如插入新的订阅源或从ObservableCollection中删除订阅源
部分代码可在下面找到
public class lbl
{
public ObservableCollection<feed> ModifiedItems
= new ObservableCollection<feed>();
public lbl()
{
InitializeComponent();
listBox1.ItemsSource = ModifiedItems ;
}
public void update(object sender, EventArgs e)
{
var x = ModifiedItems.Last();
listBox1.Items.Add(x);
}
}
public class feed
{
public int ID { get; set; }
public int source_id { get; set; }
public string title { get; set; }
public string source_icon { get; set; }
public string url { get; set; }
public string pudate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
XAML
<ListBox x:Name="listBox1" >
<ListBox.ItemTemplate >
<DataTemplate >
<StackPanel Width="400" Margin="20" >
<Button x:Name="pic" Tag="{Binding Id}">
<Button.Template>
<ControlTemplate>
<TextBlock Text="{Binding title}" TextWrapping="Wrap" FontFamily="Arial" FontSize="28" Tag="{Binding Id}"/>
</ControlTemplate>
</Button.Template>
</Button>
<TextBlock Text="{Binding pudate}" TextWrapping="Wrap" FontSize="24"/>
<Image Source="{Binding source_icon}" Width="100" Height="60"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
注意:这不是代码的一部分.尝试添加项目"只读集合不支持操作"时,它给出了错误.
我试过这里发布的解决方案实现CollectionChanged,但我仍然得到同样的错误.
如有任何帮助,请提前致谢
问题出在您的更新方法上:
public void update(object sender, EventArgs e)
{
var x = ModifiedItems.Last();
listBox1.Items.Add(x);
}
Run Code Online (Sandbox Code Playgroud)
在ItemsSource您的ListBox设置到 ModifiedItems这是一个ObservableCollection.因此,如果您在此集合中添加或删除项目,ListBoxUI将自动更新.例如,要向视图添加新项,只需执行以下操作:
ModifiedItems.Add(new feed());
Run Code Online (Sandbox Code Playgroud)
这是一个整体观点ObservableCollection,观点可以观察到它!
如果您要更新现有项目而不是添加/删除项目,则需要制作feed工具INotifyPropertyChanged.
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |