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

Я новичок в 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 ]

1 голос
/ 23 января 2012

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

Затем используйте DataTrigger в Style вашего ContentControl, чтобы изменить 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>
0 голосов
/ 24 января 2012

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

<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 и изменил высоту и ширину кнопки с помощью триггеров.

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

...