Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用样式以编程方式创建按钮_C#_Silverlight_Xaml - Fatal编程技术网

C# 使用样式以编程方式创建按钮

C# 使用样式以编程方式创建按钮,c#,silverlight,xaml,C#,Silverlight,Xaml,简单的语法问题。在VS2010上编程silverlight 4。我在xaml中创建了一个按钮样式: <UserControl.Resources> <Style x:Key ="TestbuttonStyle" TargetType="Button"> <Setter Property="Width" Value="150"></Setter> <Setter Property="Margin" Val

简单的语法问题。在VS2010上编程silverlight 4。我在xaml中创建了一个按钮样式:

<UserControl.Resources>
    <Style x:Key ="TestbuttonStyle" TargetType="Button">
        <Setter Property="Width" Value="150"></Setter>
        <Setter Property="Margin" Value="0,0,0,10"></Setter>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                        <Image Source="http://i40.tinypic.com/j5k1kw.jpg" Height="20" Width="20"  Margin="-30,0,0,0"></Image>
                        <TextBlock Text="sampleuser&#13;sample number" Margin="5,0,0,0"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

如何应用样式并将其添加到我的用户控制网格?

最初我以为您正在使用WPF。然后我意识到它是关于Silverlight的,Silverlight没有类似于WPF的FindResource或TryFindResource的分层资源查找助手方法

然而,互联网上的快速搜索放弃了,它描述了一种很好的扩展方法,您可以使用:

public static object TryFindResource(this FrameworkElement element, object resourceKey)
{
    var currentElement = element;

    while (currentElement != null)
    {
        var resource = currentElement.Resources[resourceKey];
        if (resource != null)
        {
            return resource;
        }

        currentElement = currentElement.Parent as FrameworkElement;
    }

    return Application.Current.Resources[resourceKey];
}
然后你可以这样使用它:

        Button btn = new Button();
        //btn.Style = {TestbuttonStyle};  -what do i put  here?
        grid.children.add(btn);
btn.Style = (Style)this.TryFindResource("TestbuttonStyle");