2011-12-01 44 views
2

我真的試圖找出爲什麼這個代碼的Silverlight ContentControl中在ItemTemplate中

<UserControl x:Class="TestSilverlight.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> 

<UserControl.Resources> 
    <Button x:Key="button" Content="{Binding}" /> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot" Background="Yellow"> 
    <ListBox Name="listBox"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <ContentControl Content="{StaticResource button}" /> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

using System.Collections.Generic; 

namespace TestSilverlight 
{ 
    public partial class MainPage 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
      listBox.ItemsSource = new List<string> {"a", "b", "c"}; //without this line it works 
     } 
    } 
} 

不工作。它拋出解析器異常(無法在ContentControl中設置屬性內容)。沒有約束力,它完美的作品可以嗎?

回答

0

看起來你的邏輯有問題。如果你定義了一個類型爲Button的資源 - 它會創建一個按鈕的實例。您不能將控件的單個實例作爲多個控件的內容。

爲什麼不只是這樣做:

<ListBox Name="listBox"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Button Content="{Binding}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

它起到任何作用。這個例子是我想做的工作的一小部分代碼。我沒有綁定按鈕內容以顯示即使在這種情況下它也不起作用。我需要的唯一東西是內容在資源(或其他地方除了模板標籤內)。我希望設置項目模板的一部分(不是整個模板,在這種情況下,我可以使用模板選擇器)。 – dvvrd

+0

我忘了說我的問題是爲什麼這個代碼不工作。 – dvvrd

+0

可能與名稱範圍有關。也許嘗試把資源放在app.xaml –

相關問題