我有以下XAML,它在WPF中工作正常,但在Silverlight 4中不能正常工作
<ItemsPanelTemplate x:Key="ContentListBoxItemsPanelTemplate">
<Canvas/>
</ItemsPanelTemplate>
<DataTemplate x:Key="ContentListBoxItemTemplate">
<Border CornerRadius="15" Width="150" Margin="3" Height="300">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="OrangeRed" Offset="1" />
<GradientStop Color="Brown" Offset="0" />
</LinearGradientBrush>
</Border.Background>
</Border>
</DataTemplate>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Left" Value="{Binding Left}"/>
<Setter Property="Canvas.Top" Value="{Binding Top}"/>
</Style>
然后在某处:
<ListBox Name="ContentList"
ItemTemplate="{StaticResource ContentListBoxItemTemplate}"
ItemsPanel="{StaticResource ContentListBoxItemsPanelTemplate}" />
如果我在Silverlight中尝试相同的操作,我会得到一个异常,说setter不能设置只读属性,但我仍然希望在没有代码的情况下在Silverlight中实现相同的功能。
有什么建议吗?
答案 0 :(得分:3)
Silverlight不支持setter值的绑定。 David Anson在这里有一个很好的解决方法:http://blogs.msdn.com/delay/archive/2009/05/07/one-more-platform-difference-more-or-less-tamed-settervaluebindinghelper-makes-silverlight-setters-better.aspx