UWP中的itemscontrol不会绑定到可观察集合项的坐标

亨里克·施吕特(Henrik Schlueter)

我的代码未绑定到可观察集合中项目的X和Y属性。怎么了:

    <ItemsControl ItemsSource="{Binding LED}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas Background="SkyBlue"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemContainerStyle>
            <Style TargetType="ContentPresenter">
                <Setter Property="Canvas.Left" Value="{Binding X}" />
                <Setter Property="Canvas.Top" Value="{Binding Y}" />
            </Style>
        </ItemsControl.ItemContainerStyle>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Ellipse Stroke="{Binding Color}" Fill="{Binding FillColor}" StrokeThickness="1" Width="40" Height="40"></Ellipse>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

它确实绑定到Color和FillColor。这是Shape类,存储在ObservableCollection LED中:

class Shape
{
    public int X { get; private set; }
    public int Y { get; private set; }
    public string Color { get; private set; }
    public string FillColor { get; private set; }

    public Shape (int x, int y, string color, string fillColor)
    {
        X = x;
        Y = y;
        Color = color;
        FillColor = fillColor;
    }

}
十年月亮

Setter.Value属性的文档有以下注意事项:

Windows Presentation Foundation(WPF)和Microsoft Silverlight支持使用Binding表达式为样式中的Setter提供值的功能。Windows运行时不支持Setter.Value的绑定用法(绑定不会评估,并且Setter无效,您不会收到错误,但也不会获得想要的结果)。从WPF或Silverlight XAML转换XAML样式时,请使用设置值的字符串或对象替换任何绑定表达式用法,或将这些值重构为共享的{StaticResource}标记扩展值,而不是绑定获得的值。

作为解决方法,您可以尝试使用RenderTransform代替:

<Ellipse Stroke="{Binding Color}" Fill="{Binding FillColor}" StrokeThickness="1" Width="40" Height="40">
    <Ellipse.RenderTransform>
        <TranslateTransform X="{Binding X}" Y="{Binding Y}"/>
    </Ellipse.RenderTransform>
</Ellipse>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将可观察集合中的可观察集合绑定到列表框项

将可观察的集合绑定到MVVM中的包装面板

绑定到已过滤的可观察集合

IsChecked属性绑定到可观察的集合

将可观察的集合绑定到GridView

嵌入式Winform图表可以绑定到WPF中的可观察集合吗?

WPF双向数据绑定到可观察集合中的自定义数据类型

将数据网格中的组合框绑定到可观察的集合

刷新WPF Datagrid是否不绑定到可观察的集合?

角度:绑定到服务的可观察属性->值不会更新

如何在WPF中绑定可观察集合的总和

绑定到可观察数组

如何将ListView中每个按钮的图像源绑定到可观察集合中的单个项目?

MVVM绑定可观察的集合以查看吗?

如何将枚举ItemsControl绑定到WPF中的集合?

WPF将datagrid绑定到字符串可观察的集合

如何将数据模板绑定到可观察的集合,以便它们都可以显示?

如何将WPF TabControl ContentTemplate绑定到不同ViewModel的可观察集合

如何在xamarin中将可观察的集合绑定到flexlayout?

无法将可观察的集合绑定到UserControl上的附加属性

C# 无法使用可观察集合绑定到列表视图

即使设置了绑定并将数据添加到可观察的集合中,Xamarin Forms Collectionview也不会在UI上显示任何内容

无法绑定到可观察数组

淘汰赛绑定包装器,输入更改不会触发可观察到的订阅

如何在剔除js中绑定可观察的可观察的

绑定整个项目的 XAML 无法识别我的集合中可观察项目中的属性更改

如何将ListboxItem绑定为WPF中的可观察集合,并在顶部插入新记录

WPF C# 使用绑定在 DataGrid 中显示可观察集合

如何通知父类并反映数据绑定可观察集合中的更改