所以我有一個圖像,並且我已經在屏幕中間的特定位置開始。發生各種各樣的事情,我想改變這個圖像的位置,但是相對於圖像的先前位置而不是相對於窗口發生轉換。我感覺這不是我的代碼有問題,而只是WPF的一些奇怪的特性,我沒有理解。圖像相對於原始位置而不是窗口移動
那麼我應該用什麼方法將圖像相對於窗口移動?
我目前正試圖
Canvas.SetLeft(this, location.X);
Canvas.SetTop(this, location.Y);
這並不BTW工作。它移動圖像,但圖像相對於圖像先前位置而不是窗口移動。
這裏是我試圖移動的圖像的代碼。
<UserControl x:Class="UserControls.LetterBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary Source="../Dictionaries/LetterBlockTypes.xaml" />
</UserControl.Resources>
<Image Name="LB" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{DynamicResource BLB}" Width="50" Height="50"
MouseDown="LetterBlock_MouseDown" MouseMove="LetterBlock_MouseMove" MouseUp="LetterBlock_MouseUp" >
</Image>
</UserControl>
我認爲,由於您的父級畫布沒有被宣佈佔用整個屏幕大小,所以這是可以預料的。我猜畫布會自動給出用戶控件的尺寸。 –
你可以發佈'LetterBlock_MouseMove'的完整事件處理程序嗎? – pushpraj
在UserControl上調用'Canvas.SetLeft'和'Canvas.SetTop'本身沒什麼意義(除非它真的包含在Canvas中,當然你不能依賴它)。您是否打算將Image控件相對於UserControl? – Clemens