2016-08-09 55 views
1

此刻在我的資源字典中我有一個telerik Tile控件。當它實例化的第二次,我收到以下錯誤Specified Visual is already a child of another Visual or the root of a CompositionTarget將ResourceDictionary控件綁定到多個對象

public void ListIcon() 
{ 
    var tile = Application.Current.Resources["ListTile"] as Tile;   
    Tiles.Add(tile); 
} 

的App.xaml

<telerik:Tile x:Key="Calendar" TileType="Double" Background="#FF79256B" Group="Other"> 
    <telerik:RadCalendar x:Name="calendar" 
         FontFamily="Segoe UI" 
         FontSize="10" 
         controls:StyleManager.Theme="Windows8" 
         VerticalAlignment="Top" HorizontalAlignment="Center" 
         SelectionMode="Extended" 
         IsTodayHighlighted="True" ViewsHeaderVisibility="Collapsed"          
         SelectedDate="{Binding SelectedDate, Mode=TwoWay}" 
         Culture="en-US" 
         DayTemplateSelector="{StaticResource EventDayTemplateSelector}"/> 
</controls:Tile> 

每當一個新的用戶登錄,ListIcon()被調用。如果我註銷並登錄到第二個用戶,則會發生錯誤。請問我該如何解決這個問題。

+0

您可以通過不試圖使'Telerik的的單一實例解決這個問題:Tile'多家長的孩子一次。嘗試IsShared =「False」就可以了。如果這不起作用,請將其放入DataTemplate中。 –

+0

@EdPlunkett嗨,埃德,我試着設置IsShared但該屬性是不可見的瓷磚。我也嘗試在DataTemplate中包裝瓦片,然後將'tile.Content = Application.Current.Resources [「ListTile」]設置爲DataTemplate;'但是這樣做效果不佳。任何其他技巧將不勝感激。 – Master

+0

是的,嘗試使用'DataTemplate'作爲'DataTemplate'。 '' –

回答

1

只需設置控件的x:Shared="false"的伎倆

<telerik:Tile x:Shared="False" x:Key="Calendar" TileType="Double" Background="#FF79256B" Group="Other"> 
    <telerik:RadCalendar x:Name="calendar" 
         FontFamily="Segoe UI" 
         FontSize="10" 
         controls:StyleManager.Theme="Windows8" 
         VerticalAlignment="Top" HorizontalAlignment="Center" 
         SelectionMode="Extended" 
         IsTodayHighlighted="True" ViewsHeaderVisibility="Collapsed"          
         SelectedDate="{Binding SelectedDate, Mode=TwoWay}" 
         Culture="en-US" 
         DayTemplateSelector="{StaticResource EventDayTemplateSelector}"/> 
</controls:Tile> 
相關問題