Предоставление обработчика событий для настраиваемого кода за сгенерированной кнопкой - PullRequest
0 голосов
/ 20 марта 2012

Привет всем Как я могу дать моей кнопке eventhanlder b2.Click + = new RoutedEventHandler (BtnChiefAns);Я попробовал это, и это не сработало

Моя кнопка - настраиваемая кнопка Это код для вызова

ButtonLeft b2 = new ButtonLeft ();

и когда я это делаюthis b2.Click + = new RoutedEventHandler (BtnChiefAns);Это выделит слово Click и произнесет неизвестный член 'Click' Of '"пользовательский элемент управления"'

Это код моей настраиваемой кнопки

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:edc="clr-namespace:Microsoft.Expression.Controls;assembly=Microsoft.Expression.Drawing"
mc:Ignorable="d"
x:Class="Volunteer.LayoutRootControl" Height="127" Width="200">
<UserControl.Resources>
    <Style x:Key="ButtonStyle8" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid>
                        <edc:Callout AnchorPoint="0.85,1.19" CalloutStyle="Rectangle" Fill="#FFE054EF" FontSize="14.666999816894531" Stroke="Black"/>
                        <ContentPresenter Height="96" Width="196"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

<Button Style="{StaticResource ButtonStyle8}" HorizontalAlignment="Left" Height="102" VerticalAlignment="Top" Width="200">
    <Button.Content>
        <StackPanel Orientation="Horizontal" Width="197" Margin="-40,-34,-41,-32">
            <TextBlock Width="196" x:Name="BtnIN3" Text="" FontSize="22" TextWrapping="Wrap" Margin="0,0,0,-12" Height="95" />
        </StackPanel>
    </Button.Content>
</Button>

Мне нужно нажать на эту кнопку :( Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Если у вашего UserControl есть только один Button, вы можете создать Button с пользовательским стилем без UserControl.Тогда вы можете создать кнопку в xaml или так:

Button b = new Button()
{
     Style = (Style)Application.Current.Resources["ButtonStyle8"]
};
b.Click += ...

Это будет намного проще и эффективнее

0 голосов
/ 20 марта 2012

Поскольку это UserControl, у него нет события Click. Вам нужно это реализовать.

В коде для UserControl добавьте следующее:

public event RoutedEventHandler Click;

А затем подключите событие click для кнопки, имеющейся в XAML, и в реализации напишите что-то вроде следующего:

if (Click != null)
{
  Click(this, e); // Where "e" is the parameter you got from the button.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...