Canvas.Left 和 Canvas.Top 的 Setter 在 WPF 中是可读写的,但在 Silverlight 4 中却不是,为什么?

发布于 2024-08-30 20:20:00 字数 1336 浏览 7 评论 0原文

我有以下 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 中也有同样的事情,无需代码。

有什么建议吗?

I have the following XAML, which works fine in WPF, but not in 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>

And then somewhere:

 <ListBox Name="ContentList" 
          ItemTemplate="{StaticResource ContentListBoxItemTemplate}"
          ItemsPanel="{StaticResource ContentListBoxItemsPanelTemplate}" />

If I try the same thing in Silverlight I get an exception saying that the setter cannot set a read only property, but I still want to achieve the same thing in Silverlight without code.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文