Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# 在Uwp VisualState.Setters中使用静态资源_C#_Xaml_Uwp - Fatal编程技术网

C# 在Uwp VisualState.Setters中使用静态资源

C# 在Uwp VisualState.Setters中使用静态资源,c#,xaml,uwp,C#,Xaml,Uwp,这是我的密码 <VisualState x:Name="Focused"> <VisualState.Setters> <Setter Property="Background" Value="{StaticResource LightButtonBackground}"/> <Setter Property="Foreground" Value="White" /> </VisualState.Setters>

这是我的密码

<VisualState x:Name="Focused">
  <VisualState.Setters>
    <Setter Property="Background" Value="{StaticResource LightButtonBackground}"/>
    <Setter Property="Foreground" Value="White" />
  </VisualState.Setters>
</VisualState>


编译器显示
XamlCompiler错误WMC0615:在'{'必须是标记扩展。错误代码0x09ff。
我在网络上找不到任何有用的信息。怎么了?

正如@Vincent answer所指出的,在可视状态中定义setter时没有正确使用setter,而是像定义样式资源时一样使用setter。 尽管如此,我的答案是关于如何在样式上使用已定义的
StaticResource
,分析这两种情况以及是否可行的见解


尽管如此,我认为不可能通过将样式的属性设置到资源来定义它

  • 如果您在资源上定义了多个属性,会发生什么情况?如何才能为包含多个样式属性的资源设置属性样式
  • 如果定义了一个具有背景颜色的资源,但随后使用该资源将其设置为依赖项对象控件的前景,会发生什么情况?既然目标属性接受相同的类型,那么这种灵活性是否应该存在
您实际要查找的是
BasedOn
,该属性允许继承样式。 唯一的缺点是继承自其他样式的
样式
必须以相同类型的控件为目标,或者以从基样式所针对的类型派生的控件为目标

请查看以下文档:

编辑:

不幸的是,我认为不可能使用
BasedOn
来定义从资源继承的
VisualState
样式,因为我们必须在其定义上指定每个setter。我们可能遇到XY问题
在资源定义上,如果您想从样式继承,这将是一种方法,但实际上将其应用于视觉状态似乎完全是另一回事。

正如@Vincent answer所指出的,在视觉状态内定义setter时,您没有正确地使用setter,而是像定义styl时一样使用setter电子资源。 尽管如此,我的答案是关于如何在样式上使用已定义的
StaticResource
,分析这两种情况以及是否可行的见解


尽管如此,我认为不可能通过将样式的属性设置到资源来定义它

  • 如果您在资源上定义了多个属性,会发生什么情况?如何才能为包含多个样式属性的资源设置属性样式
  • 如果定义了一个具有背景颜色的资源,但随后使用该资源将其设置为依赖项对象控件的前景,会发生什么情况?既然目标属性接受相同的类型,那么这种灵活性是否应该存在
您实际要查找的是
BasedOn
,该属性允许继承样式。 唯一的缺点是继承自其他样式的
样式
必须以相同类型的控件为目标,或者以从基样式所针对的类型派生的控件为目标

请查看以下文档:

编辑:

不幸的是,我认为不可能使用
BasedOn
来定义从资源继承的
VisualState
样式,因为我们必须在其定义上指定每个setter。我们可能遇到XY问题
在资源定义上,如果您想从样式继承,这将是一种方法,但实际上将其应用于视觉状态似乎完全是另一回事。

您在这里混合了样式的两种用法

只有在定义
样式时才能使用
属性
属性

    <Style TargetType="TextBlock" x:Key="TextBlockStyle">
        <Setter Property="Foreground" Value="Navy"/>
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="VerticalAlignment" Value="Bottom"/>
    </Style>

你把这里的两种用法混在一起了

只有在定义
样式时才能使用
属性
属性

    <Style TargetType="TextBlock" x:Key="TextBlockStyle">
        <Setter Property="Foreground" Value="Navy"/>
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="VerticalAlignment" Value="Bottom"/>
    </Style>

嗯,背景前面不应该有一个UI名称吗?比如Setter Property=“MyGrid.Background”…?我希望设置一个控件的全局属性,例如Button.ForegroundHmm背景前面不应该有一个UI名称吗?比如Setter Property=“MyGrid.Background”…我希望设置控件的全局属性,例如Button.Foreground