我知道这似乎是重复的,但是请仔细研究。
我做了两个Template Controls
:
MediaContentControl具有一些DependencyProperties
,例如AutoPlay
,ImageStretch
等。
现在,我想做的是通过TextCardControl公开MediaContentControl的属性,以便使用TextCardControl的Page
可以执行以下操作:
<controls:TextCardControl DataContext="{x:Bind ViewModel.CardData}" MediaContentControl.ImageStretch="Uniform" MediaContentControl.AutoPlay="False"/>
[就像我们在scrollviewer
或gridview
中与listview
交互的方式一样>
现在,我在堆栈like this和this上看到了很多这样的帖子,但是这个问题的不同之处在于,它们大多使用了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:一个控件,它使图像查看器和视频播放器彼此重叠...
这可以在UWP中使用Attached Properties来完成
根据您的情况,您可以在MediaContentControl
中定义依赖项属性,以及Get