簡體   English   中英

點擊Generic.xaml中的按鈕?

[英]Click Button from Generic.xaml?

我正在Silverlight中編寫自定義控件,我遇到問題讓我的Button點擊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);

因為無論我做什么,b總是回來null。 我覺得應該有一種簡單的方法將click方法分配給這個按鈕,那么我做錯了什么?

編輯:這是我的C#文件中的方法:

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

您必須覆蓋自定義控件類(C#文件)上的OnApplyTemplate( )。

像這樣。

    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事件處理程序。

雖然我可以推薦使用命令,但是替換模板的設計者可以自由選擇其他控件和事件來綁定邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM