我的" ButtonStyles.xaml"中有一个椭圆形按钮的模板。资源字典。 这是代码的一部分:
insert into t(col1, col2, . . .)
select t.id + maxid + 1, col1, col2, . . .
from t cross join
(select max(id) as maxid from t) m;
这是MainPage中的按钮:
<SolidColorBrush x:Key="brush" Color="Red"/>
<Style TargetType="Button" x:Key="MyButtonStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Target="ellipse.(Shape.Fill)" Value="{StaticResource ResourceKey=brush}">
</Setter>
<Setter Target="ellipse.(Shape.Stroke)" Value="{x:Null}"/>
</VisualState.Setters>
</VisualState>
[...]
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Ellipse x:Name="ellipse"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在我想从c#代码更改画笔资源。为此,我尝试如下:
<Button x:Name="toggle" Content="" HorizontalAlignment="Left" Height="132" Margin="40,146,0,0" VerticalAlignment="Top" Width="132" Style="{StaticResource MyButtonStyle}"/>
虽然画笔资源有效地改变了椭圆的颜色但不是。我认为问题是我不应该更改模板中的颜色,而是在实际的MainPage按钮中。 这是问题吗?我怎么能这样做?
答案 0 :(得分:0)
根据@ felix-castor的建议和this指南,我得到了一个结果。我在C#代码中放置了DependencyProperty,在XAML代码中放置了Binding。
它工作得很好但是在更改属性时它不会刷新按钮,我必须在VisualStates之间进行更改以便更新填充。我会发布另一个关于它的问题。但如果您有建议,可以发表评论。