AdaptiveTrigger和DataTemplate中 [英] AdaptiveTrigger and DataTemplate
问题描述
在一个DataTemplate威尔AdaptiveTrigger工作?
这是我的code我使用定制我的ShellNavigation,这是工作以外的可视状态很好。他们不会触发任何东西。
<外壳:ShellHeadView X:键=ShellHeadView_01>
<外壳:ShellHeadView.ContentTemplate>
<&DataTemplate的GT;
<电网保证金=20,0>
< VisualStateManager.VisualStateGroups>
< VisualStateGroup>
<的VisualState X:NAME =GreenBackgroundVisualState>
< VisualState.Setters>
<二传手目标=headViewLeft.BackgroundVALUE =绿色/>
< /VisualState.Setters>
< VisualState.StateTriggers>
< AdaptiveTrigger MinWindowWidth =1000/>
< /VisualState.StateTriggers>
< /&的VisualState GT;
<的VisualState X:NAME =OrangeBackgroundVisualState>
< VisualState.Setters>
<二传手目标=headViewLeft.BackgroundVALUE =橙色/>
< /VisualState.Setters>
< VisualState.StateTriggers>
< AdaptiveTrigger MinWindowWidth =2000/>
< /VisualState.StateTriggers>
< /&的VisualState GT;
<的VisualState X:NAME =RedBackgroundVisualState>
< VisualState.Setters>
<二传手目标=headViewLeft.BackgroundVALUE =红/>
< /VisualState.Setters>
< VisualState.StateTriggers>
< AdaptiveTrigger MinWindowWidth =3000/>
< /VisualState.StateTriggers>
< /&的VisualState GT;
< / VisualStateGroup>
< /VisualStateManager.VisualStateGroups>
< Grid.ColumnDefinitions>
< ColumnDefinition WIDTH =自动/>
< ColumnDefinition />
< /Grid.ColumnDefinitions>
<电网Grid.Column =0X:NAME =headViewLeftWIDTH =100HEIGHT =90> < /网格和GT;
尝试包装你的的DataTemplate
在用户控件
这样的 -
<&DataTemplate的GT;
<&用户控件GT;
<网格和GT;
< VisualStateManager.VisualStateGroups>
...
< /网格和GT;
< /用户控件>
< / DataTemplate中>
看起来像任何控制
已经得到了内容
属性将正常工作。这就是为什么用户控件
的作品,所以做了 ContentControl中
。
所以,如果你替换用户控件
与 ContentControl中
,并给它一个空的风格
。它应该工作了。
<风格X:键=EmptyContentControlStyle的TargetType =ContentControl中>
< setter属性=模板>
< Setter.Value>
<的ControlTemplate的TargetType =ContentControl中/>
< /Setter.Value>
< /二传手>
< /样式和GT;<&DataTemplate的GT;
< ContentControl中风格={StaticResource的EmptyContentControlStyle}>
<网格和GT;
< VisualStateManager.VisualStateGroups>
...
< /网格和GT;
< / ContentControl中>
< / DataTemplate中>
Will AdaptiveTrigger work in a DataTemplate?
That's my code i'm using to customize my ShellNavigation, it is working fine except the visual states. They will not trigger anything.
<shell:ShellHeadView x:Key="ShellHeadView_01">
<shell:ShellHeadView.ContentTemplate>
<DataTemplate>
<Grid Margin="20,0">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="GreenBackgroundVisualState">
<VisualState.Setters>
<Setter Target="headViewLeft.Background" Value="Green" />
</VisualState.Setters>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1000"/>
</VisualState.StateTriggers>
</VisualState>
<VisualState x:Name="OrangeBackgroundVisualState">
<VisualState.Setters>
<Setter Target="headViewLeft.Background" Value="Orange" />
</VisualState.Setters>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="2000"/>
</VisualState.StateTriggers>
</VisualState>
<VisualState x:Name="RedBackgroundVisualState">
<VisualState.Setters>
<Setter Target="headViewLeft.Background" Value="Red" />
</VisualState.Setters>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="3000"/>
</VisualState.StateTriggers>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" x:Name="headViewLeft" Width="100" Height="90">
</Grid>
Try wrapping your DataTemplate
inside a UserControl
like this -
<DataTemplate>
<UserControl>
<Grid>
<VisualStateManager.VisualStateGroups>
...
</Grid>
</UserControl>
</DataTemplate>
Looks like any Control
that has got a Content
property will work. That's why UserControl
works, so does a ContentControl
.
So if you replace the UserControl
with a ContentControl
and give it an empty Style
. It should work too.
<Style x:Key="EmptyContentControlStyle" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl" />
</Setter.Value>
</Setter>
</Style>
<DataTemplate>
<ContentControl Style="{StaticResource EmptyContentControlStyle}">
<Grid>
<VisualStateManager.VisualStateGroups>
...
</Grid>
</ContentControl>
</DataTemplate>
这篇关于AdaptiveTrigger和DataTemplate中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!