在 ListView 中处理 SwapChainPanel
Handle SwapChainPanel in ListView
我有我的 xaml 代码
<ListView x:Name="ListVideo"
ItemsSource="{x:Bind ScreenList}"
VerticalAlignment="Stretch"
FlowDirection="LeftToRight"
Grid.Row="1"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<controls:UniformGrid></controls:UniformGrid>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="White"
BorderBrush="White"
BorderThickness="1">
<SwapChainPanel x:Name="swapChain"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate></ListView>
与 ScreenList
是 ObservableCollection
的类型。所以问题是如何在 ListView 中添加新的 SwapChainPanel
?
我打算添加 SwapChainPanel
项目,并且对于每个项目我都使用 DirectX 来渲染视频,所以我想在代码隐藏中获取对象 SwapChainPanel
项目然后进行处理。
谢谢。
So the question is how can I add new SwapChainPanel in the ListView
您已将 SwapChainPanel 放置在列表视图数据模板中,当前列表视图 ItemsSource
是 ObservableCollection。所以你只需要将新项目添加到 ObservableCollection 中,列表视图将自动呈现新项目。
so i want to get the object SwapChainPanel item in code-behind
您可以使用 ContainerFromItem method, and find swapChain with name in ContentTemplateRoot
获得 itemContainer。
var container = MyList.ContainerFromItem(MyList.Items[0]) as ListViewItem;
var swapChain = (container.ContentTemplateRoot as Grid).FindName("swapChain");
更新
正如下面的 Hoka Biu 评论,您还可以在 SwapChainPanel Loaded 事件中获取 swapChain 实例。
<SwapChainPanel Loaded="swapChain_Loaded"/>
private void swapChain_Loaded(object sender, RoutedEventArgs e)
{
var swapChain = sender as SwapChainPanel;
}
我有我的 xaml 代码
<ListView x:Name="ListVideo"
ItemsSource="{x:Bind ScreenList}"
VerticalAlignment="Stretch"
FlowDirection="LeftToRight"
Grid.Row="1"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<controls:UniformGrid></controls:UniformGrid>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="White"
BorderBrush="White"
BorderThickness="1">
<SwapChainPanel x:Name="swapChain"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate></ListView>
与 ScreenList
是 ObservableCollection
的类型。所以问题是如何在 ListView 中添加新的 SwapChainPanel
?
我打算添加 SwapChainPanel
项目,并且对于每个项目我都使用 DirectX 来渲染视频,所以我想在代码隐藏中获取对象 SwapChainPanel
项目然后进行处理。
谢谢。
So the question is how can I add new SwapChainPanel in the ListView
您已将 SwapChainPanel 放置在列表视图数据模板中,当前列表视图 ItemsSource
是 ObservableCollection。所以你只需要将新项目添加到 ObservableCollection 中,列表视图将自动呈现新项目。
so i want to get the object SwapChainPanel item in code-behind
您可以使用 ContainerFromItem method, and find swapChain with name in ContentTemplateRoot
获得 itemContainer。
var container = MyList.ContainerFromItem(MyList.Items[0]) as ListViewItem;
var swapChain = (container.ContentTemplateRoot as Grid).FindName("swapChain");
更新
正如下面的 Hoka Biu 评论,您还可以在 SwapChainPanel Loaded 事件中获取 swapChain 实例。
<SwapChainPanel Loaded="swapChain_Loaded"/>
private void swapChain_Loaded(object sender, RoutedEventArgs e)
{
var swapChain = sender as SwapChainPanel;
}