我在畫布上拖動拖放功能,我有很多圖像。我想改變我剛剛點擊的圖像的不透明度,顯然它工作。但是,當我單擊2個或更多圖像並更改不透明度時,所有單擊的圖像也會更改。我只想要我點擊的最後一張圖片發生了變化。拖動的圖像屬性畫布內
這裏是我的代碼:
private void CanvasLayout_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var image = e.Source as Image;
if (image != null && CanvasLayout.CaptureMouse())
{
mousePosition = e.GetPosition(CanvasLayout);
draggedImage = image;
Panel.SetZIndex(draggedImage, 1);
for (int i = 1; i < 9; i++)
{
if (draggedImage.Name == "Image" + i)
{
SelectComp_ComboBox.SelectedValue = "0" + (i + 1);
Binding binding = new Binding
{
Source = TransHidden_textBox,
Path = new PropertyPath("Text"),
};
draggedImage.SetBinding(ContentControl.OpacityProperty, binding);
}
}
}
}
private void CanvasLayout_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (draggedImage != null)
{
CanvasLayout.ReleaseMouseCapture();
Panel.SetZIndex(draggedImage, 0);
draggedImage = null;
}
}
我認爲這個問題是在這條線draggedImage.SetBinding(ContentControl.OpacityProperty, binding);
,我需要改變draggedImage
到Image + i
但我不知道如何改變string
到Image
。
我該怎麼做?有沒有其他簡單的方法來解決我的問題?
我使用提供的'CanvasLayout_MouseLeftButtonDown'編輯我的代碼。我嘗試在'CanvasLayout_MouseLeftButtonDown'中使用'ClearBinding',但由於圖像爲空,導致錯誤。我仍然不明白怎麼做 – Mirza
對於遲到的回覆感到抱歉,我做到了,但是使用該代碼時,只有當我按住鼠標時,不透明度纔會改變。我認爲最好的解決方案是通過String'Image + i'獲取'draggedImage'名稱,但我不知道該怎麼做。 – Mirza
哦,我認爲那是目標...好的,所以在我更新我的答案之前,請確認我是否正確 - 您想在點擊圖像時將自定義不透明度應用於圖像,並且在點擊另一個圖像時恢復先前點擊的圖像一個正常? – Grx70