我现在拥有的一切:触发设置控件的属性在控件模板
<Style TargetType="{x:Type ListBox}" x:Key="PhotoListBoxStyle">
<Style.Triggers>
<Trigger Property="{Binding Path=IsChecked, ElementName=DetailView}" Value="False">
<Setter TargetName="WrapPanelItem" Property="ItemHeight" Value="100" />
<Setter TargetName="WrapPanelItem" Property="ItemWidth" Value="400" />
</Trigger>
</Style.Triggers>
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}" >
<WrapPanel Name="WrapPanelItem" Margin="5" IsItemsHost="True" Orientation="Horizontal"
ItemHeight="{Binding Value, ElementName=ZoomSlider }"
ItemWidth="{Binding Value, ElementName=ZoomSlider }"
VerticalAlignment="Top" HorizontalAlignment="Stretch" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我得到的最接近是名称添加到WrapPanel尝试和它上面的触发参考,但无法找到目标名称。我也尝试创建连接到直接WrapPanel一个单独的样式,而是说使用这是它的父的PhotoListBoxStyle造成与控制问题:
<Style x:Key="WrapPanelSetter" TargetType="{x:Type WrapPanel}">
<Setter Property="ItemHeight" Value="{Binding Value, ElementName=ZoomSlider }" />
<Setter Property="ItemWidth" Value="{Binding Value, ElementName=ZoomSlider }" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="Margin" Value="5" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsChecked, ElementName=DetailView}" Value="False">
<Setter Property="ItemHeight" Value="100" />
<Setter Property="ItemWidth" Value="400" />
</DataTrigger>
</Style.Triggers>
</Style>
感谢您的帮助。如果有更好的选择,我更愿意尝试不同的方法!
我实际上在我的项目中有这样的错误,不确定旧版本是如何得到的 - 但这并不影响手头的问题。如果我正确创建了该样式,我可以将其附加到WrapPanel,但是然后引用主样式PhotoListBoxStyle的控件将无法工作,并且说无法将字符串转换为system.windows.style。 – elbweb
@elbweb通常我会看到那个错误,如果我忘记指定我的Style是一个StaticResource。例如,有时我会写'Style =“MyStyle”'而不是'Style =“{StaticResource MyStyle}”'。没有理由为什么设置''WrapPanel Style =“...”/>'会影响你的'PhotoListBoxStyle'。也许你可以发布完整的非工作代码? – Rachel
我实际上找到了一个解决方案,而不必创建另一种风格。我可以在有问题的ControlTemplate中添加一个触发器,并像我最初尝试的那样通过TargetName引用想要更改的控制器。我将这添加为我的问题的解决方案。 – elbweb