1

我是 WPF 新手,无法弄清楚如何在鼠标悬停时更改控件子ContentControl级的属性。Button我的代码看起来像这样:

<Button x:Name="btnAddItem" Height="25" Width="25" Margin="5,0,0,0"
        Style="{DynamicResource btnStyle}" ToolTip="Add Item">
    <ContentControl Content="ContentControl" Height="20" Width="20"
            Template="{DynamicResource contentTemplate}" />
</Button>

现在,当MouseOver发生 时Button,我想更改Button孩子的大小以及孩子的大小ContentControlContentControl实际上包含 的矢量图像Button。请帮忙。

4

2 回答 2

1

Button将自动拉伸以适应其内容的大小,因此摆脱它的HeightWidth属性。如果要保持 Button 边缘和 ContentControl 之间的空间,请使用 ContentControl 的Margin属性。

然后,DataTrigger在您的 ContentControl 中使用 a 在鼠标悬停时Style更改Height/ 。Width确保你在你的风格而不是你的标签中设置Height/ ,因为如果你在标签中设置它,它将优先于触发的值,所以永远不会改变。Width<ContentControl>

<Style x:Key="MyContentControlStyle" TargetType="{x:Type ContentControl}">
    <Setter Property="Height" Value="20" />
    <Setter Property="Width" Value="20" />
    <Setter Property="Margin" Value="5" />
    <Setter Property="Content" Value="ContentControl" />
    <Setter Property="Template" Value="{DynamicResource contentTemplate}" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=btnAddItem, Path=IsMouseOver}" Value="True">
            <Setter Property="Height" Value="20" />
            <Setter Property="Width" Value="20" />
        </DataTrigger >
    </Style.Triggers>
</Style>


<Button x:Name="btnAddItem" Height="25" Width="25" Margin="5,0,0,0"
        Style="{DynamicResource btnStyle}" ToolTip="Add Item">
    <ContentControl Style="{StaticResource MyContentControlStyle}" /> 
</Button>
于 2012-01-23T14:32:06.203 回答
0

为了实现我想要的,我使用了 Rachel 和 Samuel Slade 的建议。我做了这样的事情:

<Button  x:Name="btnEditItem"  Style="{DynamicResource btnStyle}" Margin="5,0,0,0"   ToolTip="Edit Item" Click="btnEditItem_Click"> 
<ContentControl x:Uid="ContentControl_5" Content="ContentControl" Template=" {DynamicResource contentTemplate}" Margin="2.5"/>
</Button>

我通过 Setter 属性通过 btnStyle 设置按钮的高度和宽度,并通过触发器更改按钮的高度和宽度。

这让我完美地工作。感谢您的所有帮助建议。我不确定我是否可以得出这个结论,因为我正在考虑使用不同的子控件属性路径。再次感谢。

于 2012-01-24T07:09:43.953 回答