2013-10-02 3 views
0

У меня есть ListView и пользовательский ItemTemplate (MyUserControl1).Свойство привязки к пользовательскому ItemTemplate

<ListView Name="listView" HorizontalAlignment="Left" Height="454" Margin="656,147,0,-461" VerticalAlignment="Top" Width="337"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> 
       <TextBlock Text="{Binding text}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> 
       <local:MyUserControl1 MyParagraph="{Binding paragraph}"></local:MyUserControl1> 
       <TextBlock Text="test" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

The MyUserControl1.cs включает только свойство (MyParagraph):

public Paragraph MyParagraph 
{ 
    get 
    { 
     return _MyParagraph; 
    } 
    set 
    { 
     _MyParagraph = value; 
     Paragraph paragraph = new Paragraph(); 

     for (int i = 0; i < _MyParagraph.Inlines.Count; i++) 
     { 
      paragraph.Inlines.Add(_MyParagraph.Inlines[i]); 
      richTextBlock.Blocks.Add(paragraph); 
     } 
    } 
} 

Ошибка я получаю это:

Не удалось присвоить свойству «App4.MyUserControl1.MyParagraph ».

Я переехал из Flex, поэтому я делаю что-то неправильно, но я понятия не имею, где.

ответ

0

Для того, чтобы связать данные, целевое свойство должно быть DependancyProperty, поэтому для того, чтобы сделать эту работу связывания, MyParagraph должен быть dependancyproperty в вашем UserControl как ниже

public Paragraph MyParagraph 
    { 
    get { return (Paragraph)this.GetValue(MyParagraphProperty); } 
    set { this.SetValue(MyParagraphProperty, value); } 
    } 
    public static readonly DependencyProperty MyParagraphProperty = DependencyProperty.Register(
    "MyParagraph", typeof(Paragraph), typeof(UserControl1),new PropertyMetadata(null)); 
+0

Это работало отлично. Большое спасибо. –

Смежные вопросы