假设我有一个嵌套在Template
的{{1}}中的按钮,我可以将按钮的ListBoxItem
属性设置为true,这样它看起来就像是moused? / p>
仅举例说明,窗口顶部的通知就是我所指的。基本为IsMouseOver
,ListBoxItem
和TextBlock
答案 0 :(得分:2)
不幸的是,没有。 “IsMouseOver”是只读的。
但是,我假设你有一个Button的自定义控件模板,对吗?如果是这种情况,一种解决方法是弄乱按钮的Tag属性。向ControlTemplate添加一个触发器,该触发器在设置特定Tag值时被触发。然后,在ListBoxItems的DataTemplate中,只需在项目上的IsMouseOver为true时将按钮的Tag设置为该特定值。以下是一个例子:<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel x:Name="dp" Background="Transparent">
<Button x:Name="btn" DockPanel.Dock="Right" Content="x" Background="Gainsboro">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border x:Name="bd" Padding="2" BorderBrush="Black" BorderThickness="1"
Background="WhiteSmoke">
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bd" Property="Background" Value="LightBlue"/>
</Trigger>
<Trigger Property="Tag" Value="SimulatedMouseOver">
<Setter TargetName="bd" Property="Background" Value="LightBlue"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="bd" Property="Background" Value="Gray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
<TextBlock Text="{Binding}"/>
</DockPanel>
<DataTemplate.Triggers>
<Trigger SourceName="dp" Property="IsMouseOver" Value="True">
<Setter TargetName="btn" Property="Tag" Value="SimulatedMouseOver"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
<s:String>Item1</s:String>
<s:String>Item2</s:String>
<s:String>Item3</s:String>
</ListBox>