使用 ItemsControl 循环 "complex" 对象
Looping "complex" object with ItemsControl
我有以下 "element":
public class ReportElementViewModel
{
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
public bool IsChecked
{
get { return _isChecked; }
set
{
if (_isChecked != value)
{
_isChecked = value;
RaisePropertyChanged("IsChecked");
}
}
}
}
我的 ViewModel 包含许多 ReportElementViewModel:
public abstract class ReportViewModel<TPrimaryModel> : SharedViewModel
where TPrimaryModel : Model, new()
{
public ObservableCollection<ReportElementViewModel> ReportElementViewModels
{
get { return _reportElementViewModels; }
set
{
if (_reportElementViewModels != value)
{
_reportElementViewModels = value;
RaisePropertyChanged("ReportElementViewModels");
}
}
}
}
我删除了成员以降低代码复杂性,但它们实现正确。
在我看来,我想通过显示它们的 Name
和 IsChecked
(复选框)来显示所有 ReportElementViewModels。
我认为 ItemsControl 是正确的 "tool",但它不起作用(未显示任何内容):
<ItemsControl ItemsSource="{Binding ReportElemetViewModels}" Height="auto" VerticalAlignment="Top" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="269"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
您在 Binding
中出现了拼写错误。
ItemsSource="{Binding ReportElemetViewModels}"
应该是:
ItemsSource="{Binding ReportElementViewModels}"
我有以下 "element":
public class ReportElementViewModel
{
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
public bool IsChecked
{
get { return _isChecked; }
set
{
if (_isChecked != value)
{
_isChecked = value;
RaisePropertyChanged("IsChecked");
}
}
}
}
我的 ViewModel 包含许多 ReportElementViewModel:
public abstract class ReportViewModel<TPrimaryModel> : SharedViewModel
where TPrimaryModel : Model, new()
{
public ObservableCollection<ReportElementViewModel> ReportElementViewModels
{
get { return _reportElementViewModels; }
set
{
if (_reportElementViewModels != value)
{
_reportElementViewModels = value;
RaisePropertyChanged("ReportElementViewModels");
}
}
}
}
我删除了成员以降低代码复杂性,但它们实现正确。
在我看来,我想通过显示它们的 Name
和 IsChecked
(复选框)来显示所有 ReportElementViewModels。
我认为 ItemsControl 是正确的 "tool",但它不起作用(未显示任何内容):
<ItemsControl ItemsSource="{Binding ReportElemetViewModels}" Height="auto" VerticalAlignment="Top" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="269"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
您在 Binding
中出现了拼写错误。
ItemsSource="{Binding ReportElemetViewModels}"
应该是:
ItemsSource="{Binding ReportElementViewModels}"