![](/img/trans.png)
[英]Binding a certain value on a control in a ListView's Insert template
[英]Binding zoom value to control's size
我有一個帶有一些圖像(尺寸為24x24)的Canvas
,我還有一個可以放大和縮小畫布的滾動條。
我想在調整畫布大小時使圖像保持相同的大小,所以我想將圖像的寬度/高度綁定到縮放值,以便它們的寬度/高度將取決於縮放值(例如,它們將是Width = Width / ZoomValue
或類似的東西)
如何使用WPF和綁定獲取此行為?
謝謝!
假設圖像的寬度均為24,則綁定到ZoomValue並使用IValueConverter:
(ZoomValue必須在您的ViewModel上)
<Image Source="..." Width="{Binding ZoomValue, Converter={StaticResource ZoomToWidthConverter}" />
和IValueConverter:
public class ZoomToWidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Double imgOriginalWidth = 24;
return imgOriginalWidth / System.Convert.ToDouble(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Double imgOriginalWidth = 24;
return System.Convert.ToDouble(value) * imgOriginalWidth;
}
}
Canvas的資源必須包含ZoomToWidthConverter的鍵:
<Canvas>
<Canvas.Resources>
<local:ZoomToWidthConverter x:Key="ZoomToWidthConverter " />
</Canvas.Resources>
</Canvas>
如果圖像可以具有不同的原始寬度,請使用MultiBinding和IMultiValueConverter。
起點是定義一個你將在綁定中使用的轉換器,這里有一些有用的鏈接:
希望這可以幫助!
不太確定在WPF 4.0
已經對此主題進行了一些內置功能,也導致用戶很久以前就要求使用此功能。 您可以應用的唯一有價值的解決方案是將childcontrol.RenderTransform
指定為其父級的transformation matrix
的反轉 ,即canvas
。
讓數據綁定分配正確的值
通過這樣做,希望很清楚,您重置應用於畫布的轉換並獲得“舊”矩陣。 考慮到你在談論一個單一的轉換(沒有Translation
, Scale
和Rotation
使得順序),你必須得到數學上可預測的(如此正確)“原始”矩陣(他們稱之為Identity
)。
看看這個答案,再次引用另一個答案。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.