wpf在内部样式中找到内部网格

时间:2011-10-19 19:26:15

标签: c# wpf xaml

我有一个在xaml中定义的按钮样式,里面有一个故事板,还有一个网格。故事板将网格的不透明度设置为0.1。问题是如何通过代码恢复它。我想我可以访问网格并将不透明度设置为1但我找不到通过c#获取网格的方法。

以下是代码:

XAML:

<Style x:Key="BevelWLButton" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}" x:Name="bbtemplate">
                    <ControlTemplate.Resources>
                        <Storyboard x:Key="FadeOut" >
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid">
                                <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                                <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.05"/>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>

                    </ControlTemplate.Resources>
                    <Grid x:Name="grid">
                        -------------- up is the grid i find
    </Style>

按钮由代码创建,样式设置正确

这里我开始讲故事板:

var story = btn.Template.Resources["FadeOut"] as Storyboard;
                if (story != null)
                {
                    story = story.Clone();
                    story.Begin(btn,btn.Template);
                }

但是当我尝试

currentButton.Resources["grid"]; or currentButton.Template.Resources["grid"];

结果为null。所以,我无法重建不透明度

任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:0)

你可以这样做

Grid gridInTemplate = (Grid)currentButton.Template.FindName("grid", currentButton);

答案 1 :(得分:0)

您是否尝试过currentButton.Template.FindName("grid", currentButton) as Grid