在Windows 8.1应用程序中,在运行时将边框的高度和宽度绑定到其子节点的一半

时间:2014-08-27 08:23:20

标签: xaml windows-store-apps windows-8.1

我有一个用户控件,其中包含这样的元素

<UserControl
x:Class="App2.MyImageControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid x:Name="MyGrid" x:FieldModifier="public" ManipulationMode="None" Tapped="MyGrid_Tapped" HorizontalAlignment="Left" VerticalAlignment="Top" >
    <Grid.RenderTransform>
        <CompositeTransform></CompositeTransform>
    </Grid.RenderTransform>
    <Border x:Name="MyBorder" x:FieldModifier="public" BorderThickness="1"  BorderBrush="Transparent" Width="auto" Height="auto">
        <Grid>
            <Image x:Name="MyImageO" x:FieldModifier="public" Source="" Width="auto" Height="auto" Stretch="Fill"></Image>

        </Grid>

    </Border>
</Grid>

我想在运行时将MyBorder的宽度和高度绑定到MyImageO宽度和高度的一半。我该如何实现。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用MultiplyConverter将绑定值转换为其中的一半,但ActualWidthActualHeight不可绑定 - 它们不会引发更改通知。您最好的办法是简单地处理SizeChanged个事件,然后根据图片的ActualWidthActualHeight设置边框的尺寸。