这是我的代码,但是用户控件的tile的背景没有改变

时间:2012-12-07 12:54:02

标签: wpf user-controls background-color

<Window x:Class="justTry.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ucl="clr-namespace:justTry" 
    Title="MainWindow" Height="Auto" Width="Auto" Background="LightBlue">

<Grid>
    <Grid.Resources>
        <Style TargetType="{x:Type ucl:tile}">
            <Setter Property="Margin" Value="3"></Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Red"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>



    </Grid.Resources>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <ucl:tile Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" ></ucl:tile>
    <ucl:tile Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2"></ucl:tile>
    <ucl:tile Grid.Column="0" Grid.Row="2" ></ucl:tile>
    <ucl:tile Grid.Column="0" Grid.Row="3" ></ucl:tile>
    <ucl:tile Grid.Column="1" Grid.Row="0" ></ucl:tile>
    <ucl:tile Grid.Column="1" Grid.Row="2" Grid.RowSpan="2" ></ucl:tile>
    <ucl:tile Grid.Column="2" Grid.Row="0" Grid.ColumnSpan="2" ></ucl:tile>
    <ucl:tile Grid.Column="2" Grid.Row="1" ></ucl:tile>
    <ucl:tile Grid.Row="2" Grid.Column="3"></ucl:tile>
    <ucl:tile Grid.Column="2" Grid.Row="2" />
    <ucl:tile Grid.Column="2" Grid.Row="3" Grid.ColumnSpan="2" />
</Grid>

这是我的code.code没有给出错误,但背景颜色没有改变 这里的tile是我的usercontrol,我想改变它的背景颜色,因为它在windows 8 Metro Ui style.so我想要每个不同颜色的瓷砖但是不可能使用样式或任何东西覆盖背景颜色。给我一些建议即使我尝试这个代码它也不会给出任何错误,但用户控件(磁贴)的颜色不会被改变。 请帮我 提前谢谢

1 个答案:

答案 0 :(得分:0)

这是一个简单的问题解决方案。

此处的问题是您必须访问作为用户控件使用的Windows / Page的内容/子项。

以下是

中要进行的修改
<ucl:tile Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" x:Name="tile1" ></ucl:tile >

将所有用户控件命名为tile1,tile2 .....

并从MainWindow构造函数中的initializecomponents之后的代码中获取 为每个磁贴添加以下代码。

((Grid)tile.Content).Background = new SolidColorBrush(Colors.Red);

此处网格已经投放,因为大多数用户控件的内容始终以网格开头。你可以将它投射到任何其他UIElement,如画布或任何东西,但应该与你放在用户中的相同