UWP:如何避免模板控件开发中的样式名(x:name)?

UWP:如何避免模板控件开发中的样式名(x:name)?,uwp,uwp-xaml,Uwp,Uwp Xaml,使用UWP(或WPF),我在XAML样式中添加了x:Name。 样式对x:name根本不起作用。为什么? 现在,我正在开发一个模板控件。要使用“SetValue”更改样式属性,我必须在样式上添加名称。然后我添加了名称x:name=“MyStyleName”,但这会产生问题 下面是一个样式为x:Name的简单示例代码 <Grid Background="Black" Width="200" Height="200" > <Grid.Resources&g

使用UWP(或WPF),我在XAML样式中添加了x:Name。 样式对x:name根本不起作用。为什么?

现在,我正在开发一个模板控件。要使用“SetValue”更改样式属性,我必须在样式上添加名称。然后我添加了名称x:name=“MyStyleName”,但这会产生问题

下面是一个样式为x:Name的简单示例代码

    <Grid Background="Black" Width="200" Height="200" >

        <Grid.Resources>
            <Style x:Name="MyStyleName"  TargetType="Ellipse">
                <Setter Property="Height" Value="100" />
                <Setter Property="Width" Value="100" />
                <Setter Property="Stroke" Value="Red"/>
            </Style>
        </Grid.Resources>

        <Ellipse x:Name="Circle1" />
        <Ellipse x:Name="Circle2" />

    </Grid>

有什么好方法可以避免使用样式x:Name吗???

您需要使用
x:Key
来代替资源。它主要是
资源字典
中的标识符

但我们能改进这一点吗?因为我不推荐这样的硬编码字符串。如果使用您控件的开发人员不知道需要指定该样式,该怎么办


解决方法是在控件中创建一个
GridStyle
类型的
Style
依赖属性,并将其绑定到XAML文件中的现有样式(例如,将控件的默认样式放在主题文件夹中的
Generic.XAML
)。这样,其他开发人员也可以自由应用他们自己的
网格
风格。

有了您的答案,我得到了答案,谢谢!我必须添加“StaticResource”并查看我的更新答案,这通常是应该如何完成的。:)
        var _grid = this.GetTemplateChild(GRID_NAME) as Grid;
        if (_grid != null)
        {
            // change grid margin.
            _grid.Margin = new Thickness(0, 5, 0, 0);

            // get Style of Grid
            var _gridStyle = _grid .Resources[GRID_STYLE_NAME] as Style;
            if(_gridStyle != null)
            {
                // Change Gird Height as STYLE !
                _gridStyle.SetValue(FrameworkElement.HeightProperty, 10);

            }
        }