公开自定义控件UWP的内部自定义控件

问题描述 投票:0回答:1

我知道这似乎是重复的,但是请仔细研究。

我做了两个Template Controls

  • MediaContentControl:一个控件,其中图像查看器和视频播放器相互重叠
  • TextCardControl一个在其中使用MediaContentControl的卡片布局控件。

MediaContentControl具有一些DependencyProperties,例如AutoPlayImageStretch等。

现在,我想做的是通过TextCardControl公开MediaContentControl的属性,以便使用TextCardControl的Page可以执行以下操作:

<controls:TextCardControl DataContext="{x:Bind ViewModel.CardData}" MediaContentControl.ImageStretch="Uniform" MediaContentControl.AutoPlay="False"/>

[就像我们在scrollviewergridview中与listview交互的方式一样>

现在,我在堆栈like thisthis上看到了很多这样的帖子,但是这个问题的不同之处在于,它们大多使用了UserControl(这是他们出错的地方),或者它位于WPF或问题实际上是关于DataBinding

有人可以分享一些关于如何执行此操作的更多见解,而无需复制将MediaControl的dependencyProperties粘贴到TextCardControl上>]

更新:

根据答案和评论,这就是我实施Attached Property的方式
public bool MediaActionControlsEnabled
{
    get { return (bool)GetValue(MediaActionControlsEnabledProperty); }
    set { SetValue(MediaActionControlsEnabledProperty, value); }
}

public static readonly DependencyProperty MediaActionControlsEnabledProperty =
    DependencyProperty.RegisterAttached("MediaActionControlsEnabled", typeof(bool), typeof(MediaContentControl), new PropertyMetadata(false));

public static void SetMediaActionControlsEnabled(UIElement element, bool value) =>
    element.SetValue(MediaActionControlsEnabledProperty, value);

public static bool GetMediaActionControlsEnabled(UIElement element) =>
    (bool)element.GetValue(MediaActionControlsEnabledProperty);

我知道这似乎是重复的,但是请仔细研究。我做了两个模板控件:MediaContentControl:一个控件,它使图像查看器和视频播放器彼此重叠...

c# uwp-xaml
1个回答
0
投票

这可以在UWP中使用Attached Properties来完成

根据您的情况,您可以在MediaContentControl中定义依赖项属性,以及Get

© www.soinside.com 2019 - 2024. All rights reserved.