首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP :如何避免Templete控件开发中的样式名称(x:Name)?

UWP :如何避免Templete控件开发中的样式名称(x:Name)?
EN

Stack Overflow用户
提问于 2017-08-08 07:27:06
回答 1查看 240关注 0票数 3

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

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

下面是一个风格为x:Name的简单示例代码。

代码语言:javascript
复制
    <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 on style的主要原因,在模板控件开发期间,我想按名称访问样式。

代码语言:javascript
复制
        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);

            }
        }

有什么好办法避免使用x风格的名字吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-08 07:41:51

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

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

解决方案是在控件中创建一个类型为GridStyleStyle依赖项属性,并将其绑定到XAML文件中的现有样式(例如,放置控件默认样式的Generic.xaml in Themes文件夹)。这样,其他开发人员也可以自由地应用他们自己的Grid风格。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45561868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档