我有一个Cal Collection类型的对象(MyCals)。 (Cal是一个对象)。
MyCals由2个Cal组成,其中每个Cal都有事件列表(事件没有实现INotifyPropertyChanged接口,它有许多属性,如Summary,Id,...)
<TabControl ItemsSource="{Binding Path=MyCals, UpdateSourceTrigger=PropertyChanged}">
<TabControl.ItemTemplate>
<DataTemplate>
<!-- Tab Header -->
<TextBlock Text="{Binding Path=ProductID}" />
</DataTemplate>
</TabControl.ItemTemplate>
<!-- Content -->
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<DataGrid AutoGenerateColumns="False"
HorizontalGridLinesBrush="LightGray"
ItemsSource="{Binding Path=Events, UpdateSourceTrigger=PropertyChanged}"
VerticalGridLinesBrush="LightGray">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Summary}" Header="Summary" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
现在TabControl将显示带有正确标题的2个标签,但是当我更改时,Datagrid不会更新选择其他标签。因此,如果选择了第一个选项卡,那么将使用来自第一个Cal的数据显示该数据网格,但是当我选择第二个选项卡时,数据网格中的数据不会更新 (MyCals中的相同事件[1])
非常感谢任何帮助
答案 0 :(得分:0)
我不知道你是如何实现ViewModel的,所以我做了一个快速测试,它确实有效。
这是ViewModel的代码:
class MainViewModel : AbstractViewModel
{
public MainViewModel()
{
this.MyCals = new ObservableCollection<Cal>();
this.MyCals.Add(new Cal());
this.MyCals.Add(new Cal());
}
public ObservableCollection<Cal> MyCals { get; set; }
}
public class Cal
{
public Cal()
{
this.ProductID = "Product " + Guid.NewGuid().ToString();
this.Events = new ObservableCollection<Event>();
this.Events.Add(new Event());
this.Events.Add(new Event());
}
public string ProductID { get; set; }
public ObservableCollection<Event> Events { get; set; }
}
public class Event
{
public Event()
{
this.Summary = "Event Summary " + Guid.NewGuid().ToString();
}
public string Summary { get; set; }
}
如果我的样本没有帮助,请分享更多有关背后代码的内容。