<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfCustomControlLibrary1">
<ContentControl x:Key="BackSide" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Back}" RenderTransformOrigin="0.5,0.5">
<ContentControl.RenderTransform>
<ScaleTransform ScaleX="-1" />
</ContentControl.RenderTransform>
</ContentControl>
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<ContentControl Grid.Row="1">
<ContentControl.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="tf" ScaleX="1" />
</TransformGroup>
</ContentControl.RenderTransform>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Front}" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<Binding ElementName="tf" Path="ScaleX">
<Binding.Converter>
<loc:LessThanXToTrueConverter X="0" />
</Binding.Converter>
</Binding>
</DataTrigger.Binding>
<DataTrigger.Setters>
<Setter Property="Content" Value="{StaticResource BackSide}"/>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这是来自customcontrol的一些XAML代码。哪里有两个依赖属性(Front和Back)。
通过我的DataTrigger我想改变ContentControl的内容,使用&#34; Front&#34;使用&#34;返回&#34;。 首先,它显示了依赖属性&#34; Front&#34;然后它应该使用depencency属性&#34;返回&#34;作为内容。 这可以通过以下代码完成:
<DataTrigger.Setters>
<Setter Property="Content" Value="{StaticResource BackSide}"/>
</DataTrigger.Setters>
但这不起作用......
我可以通过以下方式绑定并显示我的控件中Front依赖项属性的内容:
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Front}" />
但是我无法弄清楚如何绑定DataTrigger设置器,以便它使用ContentControl的内容和x:Key =&#34; BackSide&#34; ContentControl中。
提前致谢。
答案 0 :(得分:0)
你说这个XAML有效:
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource
TemplatedParent}, Path=Front}" />
那么为什么不尝试将此XAML放入DataTrigger
?:
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource
TemplatedParent}, Path=Back}" />
更新&gt;&gt;&gt;
我不确定你要对UIElement DependencyProperty
做什么,但我猜你采取了错误的做法。通常在WPF中,我们的属性是数据类型,而不是 UI 类型,然后我们使用DataTemplate
生成UI类型...也许你应该重新思考你的方法
请参阅MSDN上的Data Templating Overview页面以获取进一步的帮助。
您可能还会发现我对WPF MVVM navigate views问题的回答有助于阅读。