2015-08-12 8 views
0

Моя многоразовые Кнопка в основном одной кнопки, из которых ControlTemplate состоит из TextBlock и Image. Текст property of TextBlock привязывается к DependencyProperty подвергается воздействию; аналогичным образом, Источник property of Изображение связывается с DependencyProperty. Вот код для этого Кнопка.Как назначить EventTrigger для многоразовой кнопки в ее родительском?

<Button x:Class="Core.Resource.UserControlResource.NavigationButton1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:Core.Resource.UserControlResource" 
     mc:Ignorable="d" 
     x:Name="myself"> 
<Button.Style> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="63"></ColumnDefinition> 
          <ColumnDefinition Width="63"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 
         <Image Name="IconImage" Height="42" Width="42" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Source="{Binding ElementName=myself, Path=ScreenIcon}" /> 
         <TextBlock Grid.Column="1" Text="{Binding ElementName=myself, Path=ScreenTitle}" FontSize="25" TextWrapping="Wrap" VerticalAlignment="Center"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Button.Style> 

где ScreenTitle и ScreenIcon являются вышеупомянутый DependecyProperty.

Теперь я хочу использовать эту кнопку в его "родителя", в UserControl. Код будет как

<UserControl x:Class="Core.ParentControl" 
     x:Name="parent" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:usrCtrlResrc="clr-namespace:Core.Resource.UserControlResource;assembly=Core.Resource" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     > 
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="32"/> 
     <ColumnDefinition Width="32"/> 
    <Grid.ColumnDefinitions> 
    <usrCtrlResrc:NavigationButton1 ScreenTitle="sample Screen Title" ScreenIcon="/Core.Resource;component/MediaResource/pencilEdit.png"> 
    <TextBlock Grid.Column="1" Name="txtBlk" Text="SampleSample"/> 
</Grid> 

Однако для того, чтобы добавить реакции, когда кнопка нажата (скажем, изменить Grid.ColumnSpan свойство TextBlock «txtBlk» до 2), то, что я хочу сделать иначе, присваивается EventTriggers к моему многоразовому Кнопка в «parent». Сначала я думал о двух путях, но никто из них не работает.

  • В моей многоразовой Баттона, связывающиеся Style.Triggers к DependencyProperty, чтобы получить подвергаются его "родителя". Однако он всплывает «Свойство Триггеры не имеет доступного сеттера».
  • Перемещение стиля моего многоразовой Баттона к ResourceDictionary и назначить Key для «родителя», чтобы использовать. Однако, делая это, я не уверен, как обращаться со своими двумя DependencyProperty, потому что он не должен иметь код для файла ResourceDictionary.

Любые другие обходные пути? Заранее спасибо.

ответ

0

Я, наконец, разрешаю эту проблему, напрямую переопределяя ее триггеры. Код выглядит следующим образом.

<usrCtrlResrc:NavigationButton1 ScreenTitle=... ScreenIcon=...> 
    <usrCtrlResrc:NavigationButton1.Triggers> 
     <EventTrigger RoutedEvent="usrCtrlResrc:NavigationButton1.Click"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard> 
         ... 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </usrCtrlResrc:NavigationButton1.Triggers> 
</usrCtrlResrc:NavigationButton1> 

 Смежные вопросы

  • Нет связанных вопросов^_^