将xaml对象高度设置为其他xaml对象的%

时间:2016-01-04 13:46:54

标签: xaml uwp percentage ivalueconverter

在我的UWP应用程序的DataTemplate中,我想将矩形的高度设置为图像高度的%。

我的代码看起来像这样。

 <DataTemplate
        x:Key="FlipViewTemplate">
        <Grid>

                <Image
                    x:Name="image"
                    Margin="20"
                    Source="{Binding fullImgUrl}"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center" />
                <Rectangle
                    Height="{Binding 
                   Converter={StaticResource PercentageConverter}, 
                   ElementName=image, 
                   Path=ActualHeight, 
                   ConverterParameter=0.2}"
                    Fill="#FFEA1E1E"
                    VerticalAlignment="Bottom" />

        </Grid>
    </DataTemplate>

我的转换器就像这样

 public class PercentageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return System.Convert.ToDouble(value) *
              System.Convert.ToDouble(parameter);
    }


    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }


}

我的问题是转换器中应该是图像实际高度的值始终为0.

1 个答案:

答案 0 :(得分:1)

您已经在使用网格,因此您只需定义两行即可。在下面的示例中,Image控件跨越两行,即整个Grid,而Rectangle仅位于第二行,占整个高度的20%。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="4*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Image Grid.RowSpan="2" .../>
    <Rectangle Grid.Row="1" .../>
</Grid>