WPF 绑定字典到 ItemsControl 不起作用
WPF Binding Dictionary to ItemsControl doesn't work
我需要在我的应用程序中显示字典的键值,以便您看到您在列表的哪一步。所以我认为 itemscontrol 是最好的选择。结果不太好。绑定似乎根本不起作用。我还没有在 google 上找到任何符合我的问题的解决方案,在所有解决方案中,通用绑定似乎都有效...
我有以下代码,以证明绑定应该正常工作我尝试了相同的 DataGrid 和 ListView,两者都工作正常:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding WizardSteps}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Key}" Header="Key" />
<DataGridTextColumn Binding="{Binding Value}" Header="Value"/>
</DataGrid.Columns>
</DataGrid>
<ListView ItemsSource="{Binding WizardSteps}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但此代码不起作用(无项目):
<ItemsControl ItemsSource="{Binding WizardSteps}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
C#:
public Dictionary<string, PageViewModelBase> WizardSteps { get; set; } =
new Dictionary<string, PageViewModelBase>();
private void _CreateWizardSteps()
{
CreateWizardStepsSpecific(WizardSteps);
WizardSteps.Add("Report", new ReportStepViewModel<ReportView>());
WizardSteps.Add("Report1", new ReportStepViewModel<ReportView>());
NotifyOfPropertyChange(() => WizardSteps);
}
我无法向我解释这个,itemscontrol 不应该像 listview 一样工作吗?
找到解决方案。我不得不使用 ObservableDictionary 而不是普通的。没有向我解释为什么它与 DataGrid 和 ListView 一起工作,但关键是我解决了它:)
感谢所有帮助过我的人。
我需要在我的应用程序中显示字典的键值,以便您看到您在列表的哪一步。所以我认为 itemscontrol 是最好的选择。结果不太好。绑定似乎根本不起作用。我还没有在 google 上找到任何符合我的问题的解决方案,在所有解决方案中,通用绑定似乎都有效...
我有以下代码,以证明绑定应该正常工作我尝试了相同的 DataGrid 和 ListView,两者都工作正常:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding WizardSteps}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Key}" Header="Key" />
<DataGridTextColumn Binding="{Binding Value}" Header="Value"/>
</DataGrid.Columns>
</DataGrid>
<ListView ItemsSource="{Binding WizardSteps}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但此代码不起作用(无项目):
<ItemsControl ItemsSource="{Binding WizardSteps}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
C#:
public Dictionary<string, PageViewModelBase> WizardSteps { get; set; } =
new Dictionary<string, PageViewModelBase>();
private void _CreateWizardSteps()
{
CreateWizardStepsSpecific(WizardSteps);
WizardSteps.Add("Report", new ReportStepViewModel<ReportView>());
WizardSteps.Add("Report1", new ReportStepViewModel<ReportView>());
NotifyOfPropertyChange(() => WizardSteps);
}
我无法向我解释这个,itemscontrol 不应该像 listview 一样工作吗?
找到解决方案。我不得不使用 ObservableDictionary 而不是普通的。没有向我解释为什么它与 DataGrid 和 ListView 一起工作,但关键是我解决了它:) 感谢所有帮助过我的人。