2017-10-17 63 views
0

我有一个标签,它看起来像这样:重置在XAML Xamarin.Forms的默认样式值的属性

<Label Style="{StaticResource myStyle}" x:Name="TestLabel"> 

绑定的样式设置标签,红色的背景色。

再后来就在代码中,我这样做:

TestLabel.SetValue(Label.BackgroundColorProperty, Color.Green); 

此设置标签的背景颜色为绿色。

但后来,我需要清除的绿色,我手动设置,我需要将其重置为默认值,通过绑定的风格决定(在这种情况下,红色)。

所以我这样做:

TestLabel.ClearValue(Label.BackgroundColorProperty); 

但不是恢复到红色,背景色被完全除去,变得透明(这是一个标签的默认设置,不附带任何样式)。

(一种解决方案,提供本身就TestLabel.SetValue(Label.BackgroundColorProperty,Color.Red);,但我不能这样做,因为我需要的颜色恢复到任何连接到它的风格说,是,由于不同的标签具有连接不同的样式)

+0

您使用mvvm模式吗? –

+0

为什么就不能跟踪以前的颜色,并设置它,当你试图将其复位。 'var color = TestLabel.BackgroundColor; ... TestLabel.BackgroundColor =颜色;' – Ada

回答

0

设置或重置属性使用触发器,而不是手动设置的最佳方式。

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/triggers/

+0

我实在不明白我怎么能使用触发器在这里,因为我需要的颜色在后面的代码具体条件改变,它不只是一些简单的onmouseover事件或类似的东西 – Askerman

+0

没有得到你。你使用哪种情况?为什么你使用这个TestLabel.ClearValue?如果你想改变红色回来,然后重新设定使用此TestLabel.SetValue(Label.BackgroundColorProperty,Color.Red); –

+0

触发基于条件和当值改变,它会自动设置默认的颜色。 –