1

Width画像をその画像にバインドしようとしていますActualHeight(高さはレイアウトによって決定され、正方形にしたい - これを行うより良い方法があれば、聞きたいです)。

これは私のXAMLです:

<Grid Grid.Row="1" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="auto"/>
    <ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
    <RowDefinition Height="*"/>
    <RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Image x:Name="favImage1" Source="{Binding Controller.FailStorage.FailRoamingStorage.Favorites[0].ImageUri}" Grid.Column="0" Grid.Row="0" Style="{StaticResource FavoriteImageStyle}" Width="{Binding ActualHeight, ElementName=favImage1, Mode=OneWay}"/>
</Grid>

スタイルは次のように定義されています。

    <Style x:Key="FavoriteImageStyle" TargetType="Image">
        <Setter Property="Stretch" Value="UniformToFill"/>
        <Setter Property="Margin" Value="0,0,12,12"/>
        <Setter Property="VerticalAlignment" Value="Stretch"></Setter>
    </Style>

現在、これは部分的に機能します-コレクションにアイテムを追加した後にページに戻ることは機能しているようです。

ただし、読み込み、またはその後のページへの移動により、画像が表示されなくなります。

興味深いことに、読み込み後、画像の ActualWidth は ActualHeight ではありません。少ないです。そして、グリッドの幅はさらに狭くなっています...これは単純に奇妙です...

favImage1.ActualWidth

185.13514709472656

favImage1.ActualHeight

274.0

((FrameworkElement)favImage1.Parent).ActualWidth

138.0

これを行う正しい方法は何ですか?

4

1 に答える 1

0

私があなたのことを正しく理解していれば、あなたの画像が正方形のままであることを確認したいと考えています。

これは、xaml で画像を操作する正しい方法ではないと思います。画像を でラップし、のサイズを何らかの修正にBorder設定してから、画像のプロパティを に変更します。BorderStretchUniformToFill

<Border Width="110" Height="110">
    <Image Source="my.jpg" Stretch="UniformToFill" />
</Border>

もう 1 つのオプションは、 を使用しViewBoxてイメージをラップすることです。Stretchここでは、プロパティのさまざまな値の効果を確認できます。

ViewBox.Stretch プロパティ

于 2012-10-04T09:55:05.563 に答える