[英]Data binding to ActualHeight/Width fails with LayoutTransform
[英]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
屬性的不同值的影響:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.