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

标签 c# silverlight xaml

我正在 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/

相关文章:

c# - 使用 Json.net 仅将接口(interface)属性序列化为 JSON

c# - 如何在 C# 的 delphi dll 中调用此函数

C# WPF : Getting Custom Binding Error (Converter Property Unknown) After Restoring Project from SourceSafe

c# - 在 MVVM 中实现文本框失去焦点事件

c# - 如何在初始化时加载用户控件

c# - Xamarin Forms 框架阴影设计

silverlight - 将多个样式添加到 Silverlight 控件

.net - 需要令人印象深刻的 Silverlight (4) 应用程序示例

silverlight - 如何将KeyUp/down绑定(bind)到按钮Click事件?

c# - 如果 ObservableCollection,绑定(bind)到文本框的列表将不会更新