] 3
因此,我的ViewModel中有一个带有电影的ObservableCollection,在该ObservableCollection内部,还有另一个ObservableCollection,其中所有参与该电影的演员。我想在我的DataGrid中显示Actors ObservableCollection,但是我不知道该怎么做,你有什么主意吗?谢谢
<controls:DataGrid
Grid.Row="1"
x:Name="viewFilmes"
Margin="12"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible"
AlternatingRowBackground="Transparent"
AlternatingRowForeground="Gray"
AreRowDetailsFrozen="False"
AreRowGroupHeadersFrozen="True"
AutoGenerateColumns="False"
CanUserSortColumns="False"
CanUserReorderColumns="True"
CanUserResizeColumns="False"
ColumnHeaderHeight="32"
MaxColumnWidth="400"
FrozenColumnCount="0"
GridLinesVisibility="None"
HeadersVisibility="Column"
RowDetailsVisibilityMode="Collapsed"
SelectionChanged="viewFilmes_SelectionChanged"
SelectionMode="Single"
RowEditEnded="viewFilmes_RowEditEnded"
RowGroupHeaderPropertyNameAlternative="Range"
ItemsSource="{x:Bind GestaoDeFilmesViewModel.Filmes}">
<controls:DataGrid.Columns>
<controls:DataGridTextColumn Header="Id" IsReadOnly="True" Binding="{Binding Idfilme, Mode=OneWay}" Tag="Id"/>
<controls:DataGridTextColumn Header="Nome" Binding="{Binding Nome, Mode=TwoWay}" Tag="Nome" />
<controls:DataGridTextColumn Header="Ano" Binding="{Binding Ano, Mode=TwoWay}" Tag="Ano" />
<controls:DataGridTextColumn Header="Duracao" Binding="{Binding Duracao, Mode=TwoWay}" Tag="Duracao" />
<controls:DataGridTemplateColumn Header="Foto" Tag="Foto" >
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<control:FotoControl ImageSource="{Binding Foto, Mode=TwoWay}"></control:FotoControl>
<Button Click="Foto_Button_Click">Alterar Foto</Button>
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTextColumn Header="Genero" Tag="Genero"/>
<controls:DataGridTextColumn Header="Diretor" Binding="{Binding Diretor.Nome, Mode=TwoWay}" Tag="Diretor"/>
<controls:DataGridTextColumn Header="Escritor" Binding="{Binding Escritor.Nome, Mode=TwoWay}" Tag="Escritor"/>
<controls:DataGridTemplateColumn Header="Elenco" Tag="Elenco">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Ver Elenco">
<Button.Flyout>
<Flyout>
<StackPanel>
<TextBlock Style="{ThemeResource BaseTextBlockStyle}" Text="Elenco" Margin="0,0,0,12" />
<!--<TextBox Text="{Binding Atores.Idator, Mode=TwoWay}"/>-->
</StackPanel>
</Flyout>
</Button.Flyout>
</Button>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
</controls:DataGrid.Columns>
</controls:DataGrid>
如果您打算显示集合内容,则UWP提供GridView
和ListView
控件。
像这样:
xaml.cs
public ObservableCollection<string> TestCollection {get; set;}
xaml
<GridView ItemsSource="{x:Bind TestCollection}"/>
如果您打算在ListView
中显示GridView
或DataGrid
,则可以尝试将控件放在RowDetail
中。像这样:
<controls:DataGrid ...>
...
<controls:DataGrid.RowDetailsTemplate>
<DataTemplate>
<Grid>
<GridView ItemsSource="{Binding Atores}">
</GridView>
</Grid>
</DataTemplate>
</controls:DataGrid.RowDetailsTemplate>
...
</controls:DataGrid>
以下一些文档可能会为您提供帮助:
最诚挚的问候。