0

したがって、次の XAML コードがあります。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="214" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="42" />
    </Grid.RowDefinitions>

    <toolkit:BusyIndicator IsBusy="False" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
        <StackPanel Grid.Column="0" Grid.Row="0">
            <!-- ... -->
        </StackPanel>
        <Canvas Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <!-- ... -->
        </Canvas>
    </toolkit:BusyIndicator>
    <TextBlock Grid.Row="1" Grid.ColumnSpan="2" />
</Grid>

アイデアは、BusyIndi​​cator で最初の行の両方のセルをカバーし、2 番目の行をそのままにしておくことです。しかし、Visual Studio の XAML エディターには下線が引かれ<Canvas>、「プロパティ 'Content' が複数回設定されています」と表示されます。

これを克服する方法は?

4

1 に答える 1

3

BusyIndicatoraは でContentControlあり、最大で 1 つの子しか持てないため、「コンテンツ」が複数回設定されているというエラーが発生しています。

代わりにできることは、 BusyIndi​​cator を と の兄弟としてグリッド内に配置することStackPanelですCanvas。ビジー状態のときに一番上の行の他のコントロールの上に表示されるようにするには、プロパティを使用しますCanvas.ZIndex。これには、スタックパネルとキャンバス内のどのコントロールよりも高い Z-index が必要です。(スタックパネルとキャンバスで Z インデックスを使用していない場合は1、以下の例のように使用できます。)

<Grid>
    <!-- ... -->
    <toolkit:BusyIndicator IsBusy="False" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" Canvas.ZIndex="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/ >
    <StackPanel Grid.Column="0" Grid.Row="0">
        <!-- ... -->
    </StackPanel>
    <Canvas Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <!-- ... -->
    </Canvas>
    <TextBlock Grid.Row="1" Grid.ColumnSpan="2" />
</Grid>
于 2012-06-04T09:39:12.890 に答える