以下代码显示{Binding text}
,Sprites的依赖项属性不会为文本运行运行propertyvaluechanged,但不会为sprite运行。
<ItemsControl x:Name="AnswerListBox" ItemsSource="{Binding Answers}" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:spriteRadioButton Text="{Binding text}" Sprites="{Binding Path=DataContext.UISprites, ElementName=questionField}" GroupName="{Binding Path=DataContext.QuestionTitle, ElementName=questionField}" IsChecked="{Binding selected}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
如果我不使用itemspaneltemplate,则属性按预期工作。
答案 0 :(得分:0)
目前您正在使用默认的“OneWay”绑定机制。这意味着您的对象可以更新UI,但UI无法更新对象。
您的绑定应使用“TwoWay”绑定,以允许UI通知对象更改:
<DataTemplate>
<local:spriteRadioButton Text="{Binding text,Mode=TwoWay}" Sprites="{Binding Path=DataContext.UISprites, ElementName=questionField,Mode=TwoWay}" GroupName="{Binding Path=DataContext.QuestionTitle, ElementName=questionField,Mode=TwoWay}" IsChecked="{Binding selected,Mode=TwoWay}" />
</DataTemplate>
请注意,这些更改将更新您的Answers对象。如果你想更改Answers对象本身,也需要将其标记为TwoWay绑定。