簡體   English   中英

將Width綁定到ActualHeight-僅部分起作用

[英]Binding Width to ActualHeight - only partially working

我正在嘗試將圖像的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

正確的做法是什么?

如果我對您的理解正確,則希望確保圖像保持方形。

我認為這不是在xaml中處理圖像的正確方法。 我寧願將圖像包裝在Border並將Border的大小設置為固定值,然后將圖像Stretch屬性更改為UniformToFill

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

另一種選擇是使用ViewBox包裝圖像。 在這里,您可以看到Stretch屬性的不同值的影響:

ViewBox.Stretch屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM