0
<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>

这是我的代码。代码没有给出错误,但背景颜色没有改变这里瓷砖是我的用户控件,我想改变它的背景颜色,就像它在 Windows 8 Metro Ui 样式中一样。所以我想要每个不同颜色的瓷砖,但它无法使用样式或任何东西覆盖背景颜色。给我一些建议。即使我尝试此代码也不会给出任何错误,但用户控件(平铺)的颜色不会改变。请帮助我提前谢谢

4

1 回答 1

0

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

这里的问题是您必须访问您用作用户控件的 Windows/Page 的内容/子项。

这是要在

<ucl:tile Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" x:Name="tile1" ></ucl:tile >

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

并从MainWindow的构造函数中initializecomponents后面的代码为每个tile添加以下代码。

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

此处 grid 已被强制转换,因为大多数用户控件的内容总是以 grid 开头。您可以将其转换为任何其他 UIElement,例如画布或任何东西,但应该与您放入用户中的相同

于 2012-12-13T11:05:51.293 回答