[英]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"><</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"><</Button>
</Border>
</ControlTemplate>
</Setter.Value>
注意:我刪除了Click事件處理程序。
雖然我可以推薦使用命令,但是替換模板的設計者可以自由選擇其他控件和事件來綁定邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.