2010-09-03 50 views

回答

3

只要元素包含任何資源,您就可以訪問任何FrameworkElement上的資源。如果在您的標記中定義,它必須有x:Key且不能有x:Name

如果一個按鈕包含資源,例如,您必須從其集合Resources訪問它。

var resource = button.Resources["myKey"]; 

如果你想找到一個對象,其父母或應用程序的資源,使用FindResource()代替。

var resource = this.FindResource("myKey"); 

我不明白你的困惑。

+0

也許我問這個問題:什麼時候使用X:在第十名:關鍵? – 2010-09-03 08:35:22

+0

對於您定義的任何資源,您都會使用'x:Key'。 'x:Name'用於任何你想在代碼中直接訪問的元素(不是資源)。 – 2010-09-03 09:13:33

4

•x:Key:爲ResourceDictionary中的每個資源(或其他框架中的類似字典概念)設置唯一鍵。 x:Key可能會佔用您在典型的WPF應用程序標記中看到的x:用法的90%。

•x:Name:指定處理對象元素後存在於運行時代碼中的實例的運行時對象名稱。通常,您將經常爲x:Name使用WPF定義的等價屬性。這些屬性專門映射到CLR支持屬性,因此對於應用程序編程更爲方便,其中您經常使用運行時代碼從已初始化的XAML中查找已命名的元素。最常見的這種屬性是FrameworkElement.Name。在特定類型中不支持等效的WPF框架級Name屬性時,您仍然可以使用x:Name。這發生在某些動畫場景中。

出於這個原因,你必須使用關鍵的資源

鐵道部對http://msdn.microsoft.com/en-us/library/ms752059.aspx

相關問題