指定的元素已經是另一個元素的邏輯子元素。請先將其斷開連接。(解決問題總結)


起因:

<Window x:Class="WpfApplication1.Window3"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Window3" Height="300" Width="300">

    <Window.Resources>

        <Button Background="Blue"  Margin="5" Height="28" x:Key="prev">

            <Image Height="21" Source="Images\previous.gif"></Image>

        </Button>

    </Window.Resources>

    <Grid>

        <Button Height="20" Width="70" Content="Content" />

        <StaticResource ResourceKey="prev" />

    </Grid>
<!--第二次-->
     <Grid>

        <Button Height="20" Width="70" Content="Content" />

        <StaticResource ResourceKey="prev" />

    </Grid>

</Window>

 

報錯:

指定的元素已經是另一個元素的邏輯子元素。請先將其斷開連接

 

原因:當實例化的UserControl作為多個父類控件的Content內容時,如果不清除他與前一個父控件的關系,則會報此類錯誤。

解決方案:

在資源里面添加  x:Shared="False" 就可以了。

 

X:Shared用於指定請求資源時創建實例的兩種方式。

X:Shared = “true”(默認):表示所有請求都是共享同一個實例。一般不顯示指定。

X:Shared = “false”:表示每次請求都創建一個新的實例。

即:

<Window.Resources>

        <Button Background="Blue" X:Shared = “false” Margin="5" Height="28" x:Key="prev">

            <Image Height="21" Source="Images\previous.gif"></Image>

        </Button>

    </Window.Resources>


總結思路來源 http://bbs.csdn.net/topics/370036271
       http://www.cnblogs.com/zlgcool/archive/2008/10/18/1314281.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM