动态添加用户控件



我试图添加用户控件到ItemsControl动态按下一个按钮。用户控件有一个与之关联的视图模型。UI正在使用视图模型实例化的值进行更新。

我的属性定义如下:

private ObservableCollection<StageControlViewModel> _stages = new ObservableCollection<StageControlViewModel>();
public ObservableCollection<StageControlViewModel> Stages
{
get => _stages;
set => SetProperty(ref _stages, value);
}

我在xaml中设置了以下绑定:

<ItemsControl ItemsSource="{Binding Stages}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type viewModels:StageControlViewModel}">
<views:StageControl/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

我添加了这个函数:

private void AddStage()
{
StageControlViewModel viewModel = new StageControlViewModel
{
Name = ("Stage " + (_stages.Count + 1)),
TimeToNextStage = 106
};
Stages.Add(viewModel);
}

使用以下代码设置用户控件的绑定:

<UserControl.DataContext>
<viewModels:StageControlViewModel/>
</UserControl.DataContext>

视图模型继承自ObservableObject。

现在的问题是,当我添加控件的值绑定不工作。IE - Name和TimeToNextStage没有更新UI。不知道我在这里做错了什么,希望能得到帮助。提前谢谢。

从UserControl的XAML中删除DataContext赋值:

<UserControl.DataContext>
<viewModels:StageControlViewModel/>
</UserControl.DataContext>

<ItemsControl.ItemTemplate>
<DataTemplate>
<views:StageControl/>
</DataTemplate>
</ItemsControl.ItemTemplate>

StageControl的DataContext值应该继承自项容器,一个应用DataTemplate的ContentPresenter。继承的DataContext保存对ItemsSource集合的关联元素的引用。

当你显式地为UserControl的DataContext赋值时,继承就被破坏了,控件不会绑定到ItemsSource集合元素。

相关内容

  • 没有找到相关文章

最新更新