控制作为网格的背景

时间:2011-10-13 13:31:28

标签: silverlight silverlight-4.0 grid

我有一个网格,我需要一个控件作为此网格的背景。这个控件将是一个进度条,但是如何创建它是我的问题。

我找不到如何将控件设置为网格背景。

你对这类问题有过经验吗?

    <DataTemplate x:Key="TodoItemWeeklyTemplate">
        <Grid MinWidth="800" Background="Transparent">

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Image Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding Occurrence.Appointment.Icon, Converter={StaticResource imgConverter}}" Width="16" Height="16" Stretch="Fill" />
            <TextBlock Grid.Column="1" HorizontalAlignment="Left" MaxWidth="130" Text="{Binding Occurrence.Appointment.Subject}" />

        </Grid>
    </DataTemplate>

2 个答案:

答案 0 :(得分:1)

我将如何做到这一点: -

    <Grid MinWidth="800">
        <Rectangle x:Name="Background" Fill="Green" Width="{Binding PercentDone, Converter={StaticConverter WidthConv}, ConverterParameter=800}" HorizontalAlignment="Left" />
        <Grid Background="Transparent"> 

            <Grid.ColumnDefinitions> 
                <ColumnDefinition Width="Auto" /> 
                <ColumnDefinition Width="*" /> 
            </Grid.ColumnDefinitions> 

            <Grid.RowDefinitions> 
                <RowDefinition Height="*" /> 
            </Grid.RowDefinitions> 

            <Image Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding Occurrence.Appointment.Icon, Converter={StaticResource imgConverter}}" Width="16" Height="16" Stretch="Fill" /> 
            <TextBlock Grid.Column="1" HorizontalAlignment="Left" MaxWidth="130" Text="{Binding Occurrence.Appointment.Subject}" /> 

        </Grid>
    </Grid>

其中WidthConv是添加到实现IValueConverter的usercontrol资源的类的实例。 Convert方法将获取输入百分比值并将其应用于参数以返回矩形需要的宽度以表示该百分比值。

这里重要的一点是Grid当占据相同的区域时,{{1}}自然地叠加元素。

答案 1 :(得分:1)

您无法将控件设置为背景,因为它是Brush类型。

但是如果你想模仿你可以把你的Grid放在另一个那样的那个:

<Grid>

   <Grid>
      <!-- put your Content here -->
   </Grid>

   <ProgressBar />

</Grid>