Изменить свойство дочернего элемента управления (contentcontrol) при наведении курсора на родительский элемент

Я новичок в 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 а также размер ребенка ContentControl, ContentControl на самом деле содержит векторное изображение для Button, Пожалуйста помоги.

2 ответа

Решение

Ваш Button автоматически растянется по размеру содержимого, поэтому избавьтесь от Height а также Width свойства. Если вы хотите сохранить пространство между краем кнопки и ContentControl, используйте ContentControl Margin имущество.

Затем используйте DataTrigger в вашем ContentControl's 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>

Чтобы добиться того, чего я хотел, я воспользовался советом Рэйчел и Сэмюэля Слэйда. Я сделал это примерно так:

<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>

И я устанавливаю высоту и ширину кнопки через btnStyle через свойство Setter и изменяю высоту и ширину кнопки через триггеры.

Это заставило меня работать отлично. Я ценю все ваши предложения помощи. Я не уверен, что смог бы прийти к такому выводу, поскольку думал о другом маршруте свойства дочерних элементов управления. Еще раз спасибо.

Другие вопросы по тегам