簡體   English   中英

將縮放值綁定到控件的大小

[英]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。

起點是定義一個你將在綁定中使用的轉換器,這里有一些有用的鏈接:

  1. http://www.wpftutorial.net/ValueConverters.html
  2. http://blogs.imeta.co.uk/FMoreno/archive/2008/11/07/498.aspx

希望這可以幫助!

不太確定在WPF 4.0已經對此主題進行了一些內置功能,也導致用戶很久以前就要求使用此功能。 您可以應用的唯一有價值的解決方案是將childcontrol.RenderTransform指定為其父級的transformation matrix反轉 ,即canvas

讓數據綁定分配正確的值

通過這樣做,希望很清楚,您重置應用於畫布的轉換並獲得“舊”矩陣。 考慮到你在談論一個單一的轉換(沒有TranslationScaleRotation使得順序),你必須得到數學上可預測的(如此正確)“原始”矩陣(他們稱之為Identity )。

看看這個答案,再次引用另一個答案。

希望這可以幫助。

暫無
暫無

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

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