Моя многоразовые Кнопка в основном одной кнопки, из которых 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.
Любые другие обходные пути? Заранее спасибо.