gpt4 book ai didi

c# - 单击 Generic.xaml 中的按钮?

转载 作者:行者123 更新时间:2023-11-30 16:30:23 27 4
gpt4 key购买 nike

我正在 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);

因为无论我做什么,b 总是返回 null。我觉得应该有一种简单的方法可以将点击方法分配给此按钮,那么我做错了什么?

编辑:这是我的 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 事件处理程序。

关于c# - 单击 Generic.xaml 中的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com