我正試圖通過按下按鈕將用戶控制元件動態地添加到ItemsControl中。用戶控制元件有一個與之相關的視圖模型。UI正隨著視圖模型被實體化的值而更新。
我的屬性是這樣定義的:
我的屬性是這樣定義的。
private ObservableCollection<StageControlViewModel> _stages = new ObservableCollection<StageControlViewModel>()。
public ObservableCollection<StageControlViewModel> Stages
{
get => _stages;
set => SetProperty(ref _stages, value);
}
我在xaml中設定了以下的系結:
我在xaml中設定了以下的系結。
<ItemsControl ItemsSource="{binding Stages}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type viewModels:StageControlViewModel}"/span>>
<views:StageControl/>
</DataTemplate>/span>
</ItemsControl.ItemTemplate>/span>
</ItemsControl>
我用這個函式添加它:
private void AddStage()
{
StageControlViewModel viewModel = new StageControlViewModel
{
Name = ("Stage" (_stages.Count 1))。
下一階段的時間 = 106
};
Stages.Add(viewModel)。
}
用戶控制元件的系結是通過以下代碼設定的:
<UserControl.DataContext>/span>
<viewModels:StageControlViewModel/>/span>
</UserControl.DataContext>/span>
視圖模型繼承自ObservableObject.
。現在我遇到的問題是,當我添加控制元件時,值的系結并不作業。IE - Name和TimeToNextStage都沒有更新UI。我不確定我在這里做錯了什么,希望能得到幫助。謝謝。
uj5u.com熱心網友回復:
從UserControl的XAML中移除DataContext分配:
<UserControl.DataContext>
<viewModels:StageControlViewModel/>/span>
</UserControl.DataContext>/span>
當你寫
時<ItemsControl.ItemTemplate>
<DataTemplate>/span>
<views:StageControl/>>
</DataTemplate>/span>
</ItemsControl.ItemTemplate>
StageControl的DataContext值應該從item容器繼承,ContentPresenter應用DataTemplate。繼承的 DataContext 持有對 ItemsSource 集合的相關元素的參考。
當您顯式地分配 UserControl 的 DataContext 時,繼承關系被打破,控制元件不會系結到 ItemsSource 集合元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307893.html
標籤:
