2014-10-22 68 views
0

我所擁有的,這是和它的正常工作:設置和名稱查找控制

if (direction.Equals("UR")) 
{ 
    UR_Image.Source = new BitmapImage(new Uri(String.Format("file:///{0}/../Family/" + name + "/Image/"+direction+".png", Directory.GetCurrentDirectory()))); 
} 
else if (direction.Equals("UL")) 
{ 
    UL_Image.Source = new BitmapImage(new Uri(String.Format("file:///{0}/../Family/" + name + "/Image/"+direction+".png", Directory.GetCurrentDirectory()))); 
} 

我希望做下面的,寫成僞代碼:

direction + _Image.Source = new BitmapImage(new Uri(
    String.Format("file:///{0}/../Family/" + name + "/Image/"+direction+".png", 
    Directory.GetCurrentDirectory()))); 

我如何能實現direction + _Image

方向是string而UL_Image和UR_Image是圖像視圖。

+0

如何簡單地使用識別您的方向手錶,例如「U」爲「0」,「UR」爲「1」,「R」爲「2」等。 – Mario 2014-10-22 09:42:09

+1

嘗試將您的圖像存儲到一個'Dictionary '中,'direction'將是key,對應它是一些'Image',因此它可能是'yourDict [direction] .Source = new BitmapImage ... ',當然我們首先應該檢查關鍵的存在。還要考慮使用MVVM模式。 'Image'只是一個控件,我們不應該像保存數據那樣保存它。 – 2014-10-22 09:44:19

+0

馬里奧,意見不同,這就是問題所在。 – Dim 2014-10-22 09:48:09

回答

1

請嘗試以下方法。

YourWindow.xaml

<!-- named controls --> 
<Image x:Name="ImageOne" /> 
<Image x:Name="ImageTheOther" /> 

YourWindow.xaml.cs

// get image control by name 
var control = FindName(string.Format("Image{0}", direction)) as Image; 
if (control == null) 
    return; 

// set bitmap once 
string path = Path.Combine(Environment.CurrentDirectory, "image.png"); 
var bitmap = new BitmapImage(new Uri(path)); 

// assign 
control.Source = bitmap; 

哪裏direction是枚舉

public enum Direction 
{ 
    One, 
    TheOther 
}