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