如何绑定列表<;字符串>;到DataGridColumn
本文关键字:lt 字符串 gt DataGridColumn 列表 何绑定 绑定 | 更新日期: 2023-09-27 18:27:08
我有以下XAML:
<DataGrid Name="nodeDataGrid" ItemsSource="{Binding NodeList}" AutoGenerateColumns="False" RowBackground="White"
AlternatingRowBackground="AliceBlue" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Background="Silver" Margin="0,34,10,10" IsReadOnly="True" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" CanUserSort="True" SortDirection="Ascending" CellStyle="{StaticResource CellStyle}" />
<DataGridTextColumn Header="Category" Binding="{Binding Path=Category}" Width="*" />
<DataGridTemplateColumn Header="Children">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ListBox>
<TextBlock Text="{Binding}" />
</ListBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
还有一个代码:
private ServiceMapViewModel smViewModel = new ServiceMapViewModel();
public MainWindow()
{
InitializeComponent();
this.Loaded += (s, e) =>
{
this.DataContext = smViewModel;
};
}
在ServiceMapViewModel中,我有一个NodeList,类似于:List<节点>
节点是:
public string Name { get; set; }
public string Category { get; set; }
public string Group { get; set; }
public List<string> Children { get; set; }
public List<string> Parents { get; set; }
我的问题是如何将列表框绑定到儿童财产?
Children
是当前上下文的集合,因此需要使用以下内容:
<ListBox ItemsSource="{Binding Children}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Text="{Binding Children}" />
但是,请注意,除非在Node类上实现INotifyPropertyChanged,否则将无法获得对绑定中反映的属性的更新。
编辑:哦,等等,你正在数组中绑定一个数组。然后,您将需要一个能够实际绑定集合而不是TextBlock的控件。或者您试图只绑定一个节点的位置?
也许你可以更好地解释你正在尝试做什么。