簡體   English   中英

WPF重用XAML資源

[英]WPF reuse XAML resource

我的主窗口中有資源

<Window.Resources>
        <Path x:Key="QueenPiece" Width="31.6667" Height="44.7292" Canvas.Left="22.1667" Canvas.Top="15.4375" Stretch="Fill" Fill="#FF000000" Data="F1 M 38,15.4375C 39.3788,15.4375 41.3434,16.4942 41.7781,17.4167L 49.0833,17.4167L 42.75,25.3333L 42.8575,30.7597L 49.0833,33.25L 42.5936,33.25C 42.9492,38.7231 43.2787,42.8806 44.1936,46.083L 48.2917,47.5L 45.4222,47.5C 48.7019,57.3679 53.8333,56.9346 53.8333,60.1667L 22.1667,60.1667C 22.1667,56.9346 27.2981,57.3679 30.5778,47.5L 27.7083,47.5L 31.8064,46.083C 32.7212,42.8806 33.0508,38.723 33.4064,33.25L 26.9167,33.25L 33.1425,30.7597L 33.25,25.3333L 26.9167,17.4167L 34.2218,17.4167C 34.6566,16.4942 36.6212,15.4375 38,15.4375 Z "/>
</Window.Resources>

我想在C#中多次添加它,但讓我們僅添加一次出現的資源。 如果我嘗試再添加一個,則會出現此錯誤

Specified Visual is already a child of another Visual or the root of a CompositionTarget. 

我這樣補充。

private void cell_MouseDown(object sender, MouseButtonEventArgs e)
{
     Path queen = this.Resources["QueenPiece"] as Path;
     ChessBoard.Children.Add(queen);
}

那么,如何添加多次出現的這種資源呢?

使用x:Shared = false 這將在每次調用時返回資源的新實例。

<Path x:Key="QueenPiece" Width="31.6667" x:Shared="false"

通常,對於您的資源使用resource dictionary或在app.xaml文件中聲明資源,這樣在整個應用程序中都可用是一個很好的做法。

您可以將資源作為靜態資源綁定到任何窗口或控件。 而在代碼中,您必須編寫

Path queen= App.Current.Resources["QueenPiece"] as path;
ChessBoard.Children.Add(queen);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM