如何访问DataTemplate的控件

丹尼尔

我在UserControl资源中有两个不同的DataTemplates。一个DataTemplate包含一个图像控件,另一个DataTemplate包含一个媒体元素控件。每个DataTemplate的DataType分别代表一个ImageViewModel和一个VideoViewModel。在我的用户控件中,有一个包含ContentControl的网格。内容控件的content属性绑定到一个属性,该属性表示应使用的当前视图模型。

想法是根据当前视图模型更改网格的内容

<UserControl.Resources>
    <DataTemplate DataType="{x:Type vm:ImageScreensaverViewModel}">
        <Image Source="{Binding Image}" Stretch="Uniform"/>
    </DataTemplate>

    <DataTemplate DataType="{x:Type vm:VideoScreensaverViewModel}">
        <MediaElement x:Name="Player" Source="{Binding Video}" LoadedBehavior="Play" />
    </DataTemplate>
</UserControl.Resources>

<UserControl.CommandBindings>
    <CommandBinding Command="MediaCommands.Pause" Executed="PausePlayer" CanExecute="CanExecute"/>
    <CommandBinding Command="MediaCommands.Play" Executed="PlayPlayer" CanExecute="CanExecute"/>
</UserControl.CommandBindings>

<Grid>
    <ContentControl x:Name="ScreanSaverContent" Content="{Binding CurrentVm}"/>
</Grid>

这很好用,但是我需要在后面的代码中访问MediaElement,以便可以控制媒体播放器(播放,停止,暂停)

我已经尝试过将解决方案发布在hier上,但没有成功。我只能通过content属性访问选定的视图模型。

亚历克斯·谢列兹诺夫(Alex Seleznyov)

尝试这段代码到达ContentPresenter内部的控件

    public static FrameworkElement GetControlByName(DependencyObject parent, string name)
    {
        int count = VisualTreeHelper.GetChildrenCount(parent);
        for (var i = 0; i < count; ++i)
        {
            var child = VisualTreeHelper.GetChild(parent, i) as FrameworkElement;
            if (child != null)
            {
                if (child.Name == name)
                {
                    return child;
                }
                var descendantFromName = GetControlByName(child, name);
                if (descendantFromName != null)
                {
                    return descendantFromName;
                }
            }
        }
        return null;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在DataTemplate中访问动态控件WPF

来自分类Dev

从DataTemplate访问父DataContext(这是用户控件)

来自分类Dev

如何从DataTemplate访问ObservableCollection

来自分类Dev

如何从 DataTemplate 获取 XAML 控件的值

来自分类Dev

如何访问DataTemplate中的项目?

来自分类Dev

如何访问DataTemplate中的项目?

来自分类Dev

如何从代码访问位于<phone:PanoramaItem.HeaderTemplate>的DataTemplate标记中的文本框控件-背后(MainPage.xaml.cs)

来自分类Dev

如何访问控件?

来自分类Dev

在后面的代码中访问DataTemplate控件

来自分类Dev

如何从ViewModel访问View控件?

来自分类Dev

如何访问用户控件的项目

来自分类Dev

如何从ViewModel访问View控件?

来自分类Dev

如何使用C#创建DataTemplate并设置子控件的资源?

来自分类Dev

如何以编程方式绑定DataTemplate内部控件的(依赖)属性?

来自分类Dev

如何使用其自己的DataTemplate DependencyProperty实现WPF控件?

来自分类Dev

如何通过Datatemplate以控件的样式更改TextBlock的前景?

来自分类Dev

如何防止TreeView 的DataTemplate 导致控件水平展开?

来自分类Dev

获取DataTemplate控件内的控件

来自分类Dev

控件的默认DataTemplate

来自分类Dev

如何从父aspx页访问子用户控件中的控件

来自分类Dev

如何访问用户以父形式定义控件,内部控件

来自分类Dev

如何重新访问之前在子控件中声明的用户控件?

来自分类Dev

如何从母版页访问用户控件中的控件?

来自分类Dev

如何在表格布局的控件中访问控件

来自分类Dev

如何访问用户以父形式定义控件,内部控件

来自分类Dev

如何重新访问之前在子控件中声明的用户控件?

来自分类Dev

如何访问UpdatePanel中的“读取值”控件的控件?

来自分类Dev

您如何使用MVP访问表单的控件

来自分类Dev

如何访问GridView ButtonField控件ID?

Related 相关文章

  1. 1

    如何在DataTemplate中访问动态控件WPF

  2. 2

    从DataTemplate访问父DataContext(这是用户控件)

  3. 3

    如何从DataTemplate访问ObservableCollection

  4. 4

    如何从 DataTemplate 获取 XAML 控件的值

  5. 5

    如何访问DataTemplate中的项目?

  6. 6

    如何访问DataTemplate中的项目?

  7. 7

    如何从代码访问位于<phone:PanoramaItem.HeaderTemplate>的DataTemplate标记中的文本框控件-背后(MainPage.xaml.cs)

  8. 8

    如何访问控件?

  9. 9

    在后面的代码中访问DataTemplate控件

  10. 10

    如何从ViewModel访问View控件?

  11. 11

    如何访问用户控件的项目

  12. 12

    如何从ViewModel访问View控件?

  13. 13

    如何使用C#创建DataTemplate并设置子控件的资源?

  14. 14

    如何以编程方式绑定DataTemplate内部控件的(依赖)属性?

  15. 15

    如何使用其自己的DataTemplate DependencyProperty实现WPF控件?

  16. 16

    如何通过Datatemplate以控件的样式更改TextBlock的前景?

  17. 17

    如何防止TreeView 的DataTemplate 导致控件水平展开?

  18. 18

    获取DataTemplate控件内的控件

  19. 19

    控件的默认DataTemplate

  20. 20

    如何从父aspx页访问子用户控件中的控件

  21. 21

    如何访问用户以父形式定义控件,内部控件

  22. 22

    如何重新访问之前在子控件中声明的用户控件?

  23. 23

    如何从母版页访问用户控件中的控件?

  24. 24

    如何在表格布局的控件中访问控件

  25. 25

    如何访问用户以父形式定义控件,内部控件

  26. 26

    如何重新访问之前在子控件中声明的用户控件?

  27. 27

    如何访问UpdatePanel中的“读取值”控件的控件?

  28. 28

    您如何使用MVP访问表单的控件

  29. 29

    如何访问GridView ButtonField控件ID?

热门标签

归档