Нажмите кнопку из Generic.xaml? - PullRequest
3 голосов
/ 19 апреля 2011

Я пишу пользовательский элемент управления в Silverlight, и у меня возникают проблемы с получением моей кнопки для нажатия на файл Generic.xaml.Это не работает:

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:ScrollableTabControl">
                    <Button Grid.Row="0" Grid.Column="0" x:Name="ScrollLeft" Click="scrollLeft">&lt;</Button>
            </ControlTemplate>
        </Setter.Value>

"ScrollLeft" находится в моем файле C #.

Однако это также не работает:

        var b = this.GetTemplateChild("ScrollLeft");
        Debug.Assert(b != null);

Потому что независимо от того, что ядо, б всегда возвращается ноль.Я чувствую, что должен быть простой способ назначить метод click для этой кнопки, так что я делаю не так?

EDIT: Это метод из моего файла C #:

    public void scrollLeft(object sender, RoutedEventArgs e)
    {
        //var scroller = Application.Current.Resources["TabScroller"] as ScrollViewer;
        //scroller.LineLeft();
    }

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Вы должны переопределить OnApplyTemplate () в своем пользовательском классе управления (файл C #).

Вот так.

    public override void OnApplyTemplate()
    {
        Button btn = GetTemplateChild("ScrollLeft") as Button;
        Debug.Assert(btn != null);
    }

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

<Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:CustomControl1}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <Button Grid.Row="0" Grid.Column="0" x:Name="ScrollLeft">&lt;</Button>
                </Border>
            </ControlTemplate>
        </Setter.Value>

Примечание: Я удалил обработчик события Click.

1 голос
/ 19 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...