我想在c#中開始使用WPF。 我將Canvas設置爲一個窗口的內容,然後創建另一個Canvas並將其作爲第一個Canvas的子項(與其他元素(如按鈕和標籤)一起)。一切都正常運行,直到我創建一個圖像對象和動態地添加它到內畫布:在WPF中的圖像控制奇怪的行爲
Image m_Img = new Image
{
Name = "img1",
Width = cvWindow.Width,
Height = dUsefulHeight,
Stretch = Stretch.Uniform
};
m_Img.Source = new BitmapImage(
new Uri(xMap.SelectSingleNode("@image").FirstChild.Value,
UriKind.RelativeOrAbsolute));
Canvas.SetLeft(m_Img, 0);
Canvas.SetTop(m_Img, 0);
double d = m_Img.Source.Width;
cvWindow.Children.Add(m_Img);
這裏m_Img是我創建圖像,cvWindow是內畫布。圖像的來源是一個PNG文件,從XML文件中提取(返回的字符串是正確的)。
奇數行爲是在這裏:如果我註釋掉線
double d = m_Img.Source.Width;
不再被顯示圖像,雖然在畫布其他控件(如標籤和按鈕)的正確顯示。
我不需要源圖像的寬度,所以編譯器告訴我該變量永遠不會被使用。
我將Visual Studio 2010更新爲最後一個SP1,但行爲依然存在。谷歌也沒有幫助。我開始認爲Width屬性可能有一個getter方法觸發某個動作,但不能解決這個難題。
編輯:使用源的另一個屬性(例如高度)會發生同樣的事情。如果我訪問至少一個屬性,則圖像顯示正常。
我不能使用其他佈局面板,因爲我需要一個相當奇怪的佈局,但我一定會考慮綁定和代碼和視圖之間更強的分離..我實際上試圖在XAML中做到這一點(和它工作),但我堅持通過代碼來做到這一點,並想知道爲什麼它不起作用。不過謝謝你的建議。 – DrWatson 2011-04-27 20:38:02