首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将SolidColorBrush绑定到ControlTemplate背景

将SolidColorBrush绑定到ControlTemplate背景
EN

Stack Overflow用户
提问于 2016-01-20 08:41:41
回答 1查看 1K关注 0票数 3

嗨,我试图将SolidColorBrush绑定到TabItem控制模板中边框的背景属性。但是当im更改SolidColorBrush资源的值时,它说“不能在对象‘# of 808080’上设置一个属性,因为它处于只读状态。”就像没有ControlTemplate的股票按钮一样,它的工作也很完美。

这是我的密码。(XAML)

代码语言:javascript
运行
复制
<Window.Resources>
    <SolidColorBrush x:Key="SolidColorBrush2" Color="Gray"/>
    <SolidColorBrush x:Key="SolidColorBrush3" Color="Black"/>

    <Style x:Key="TabItemTemplate" TargetType="TabItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <Border Name="Tab" Height="30" Padding="10 0" Margin="0 0 10 0">
                        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White">
                            <ContentPresenter x:Name="TabItemContent"  HorizontalAlignment="Center" VerticalAlignment="Center" ContentSource="Header"></ContentPresenter>
                        </TextBlock>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Tab" Property="Background" Value="{DynamicResource SolidColorBrush3}"/>
                        </Trigger>
                        <Trigger Property="IsSelected" Value="False">
                            <Setter TargetName="Tab" Property="Background" Value="{DynamicResource SolidColorBrush2}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <TabControl Name="TabControlRepaymentWorkflowInner" Grid.Row="0">
        <TabItem Header="ABC" Style="{DynamicResource TabItemTemplate}" Foreground="White">
            <StackPanel Orientation="Vertical" Margin="0 0 5 0" HorizontalAlignment="Center">
                <TextBlock Margin="5 0 0 0" Text="Enter note for Front Office"/>
                <Button Background="{DynamicResource SolidColorBrush2}" Content="Button1"/>
            </StackPanel>
        </TabItem>
        <TabItem Header="DEF" Style="{DynamicResource TabItemTemplate}" Foreground="White">
            <StackPanel Orientation="Vertical" Margin="0 0 5 0" HorizontalAlignment="Center">
                <TextBlock Margin="5 0 0 0" Text="Enter note for Front Office"/>
                <Button Background="{DynamicResource SolidColorBrush2}" Content="Button2"/>
            </StackPanel>
        </TabItem>
        <TabItem Header="GHI" Style="{DynamicResource TabItemTemplate}" Foreground="White">
            <StackPanel Orientation="Vertical" Margin="0 0 5 0" HorizontalAlignment="Center">
                <TextBlock Margin="5 0 0 0" Text="Enter note for Front Office"/>
                <Button Background="{DynamicResource SolidColorBrush2}" Content="Button3"/>
            </StackPanel>
        </TabItem>
    </TabControl>
    <Button Grid.Row="1" HorizontalAlignment="Center" Height="30" VerticalAlignment="Top" Click="ChangeTheme_Click">Change Theme</Button>
</Grid>

这是我的C#代码

代码语言:javascript
运行
复制
private void ChangeTheme_Click(object sender, RoutedEventArgs e)
    {
        SolidColorBrush brush2 = (SolidColorBrush)Resources["SolidColorBrush2"];
        SolidColorBrush brush3 = (SolidColorBrush)Resources["SolidColorBrush3"];
        brush2.Color = Color.FromArgb(255, 200, 200, 200);
        brush3.Color = Color.FromArgb(255, 251, 132, 61);
    }

而错误是:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 09:21:23

对不起,你的主题做得不对。与其更改Solid脑刷的属性,不如进行整个资源项的替换,如本文在SO:see @Łukasz Rejman answer上所描述的那样

例如:

代码语言:javascript
运行
复制
Resources["SolidColorBrush2"] = new SolidColorBrush(Color.FromArgb(255, 200, 200, 200));
Resources["SolidColorBrush3"] = new SolidColorBrush(Color.FromArgb(255, 251, 132, 61));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34895192

复制
相关文章

相似问题

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