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 の後のコード ビハインドから 各タイルに次のコードを追加します。

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

ほとんどの場合、usercontrol のコンテンツは常に grid で始まるため、ここで grid がキャストされています。キャンバスなどの他のUIElementにキャストできますが、ユーザーに入れたものと同じでなければなりません

于 2012-12-13T11:05:51.293 に答える