首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UWP绑定属性到ItemsSource的当前项

UWP绑定属性到ItemsSource的当前项
EN

Stack Overflow用户
提问于 2018-08-16 11:42:30
回答 1查看 318关注 0票数 1

我的页面设置如下:

代码语言:javascript
复制
   <ListView ItemsSource="{Binding RecentResults}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid Background="Transparent" Orientation="Horizontal" ItemWidth="400" ItemHeight="300" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ui:CarResultControl Result="{Binding}" Padding="0" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我绑定到一个本地属性,该属性异步地提供我的结果。这个很好用。

现在,我的CarResultControl绑定到它的本地Result属性(这是一个DependencyProperty)。当我指定Result={Binding}时,属性将得到更新,但不是CarResult但是CarResultControl所期望的那样。如果我使用Result={Binding Path=.}或similiar,它根本就不会更新。

据我所知,在WPF {Binding}中,它实际上绑定到数据对象本身,而不是附加绑定到的控件。有趣的是,当我必须为结果选择绑定路径时,IntelliSense实际上显示了预期的CarResult对象的属性。

UWP是不是又在做自己的事情了,我只是个傻瓜,做错了,还是真的是个bug?我挣扎了很久,找不到任何关于它的信息。

EN

Stack Overflow用户

发布于 2018-08-16 12:05:50

除非您正在更改DataContextCarResultControl,否则这实际上应该是您预期的工作方式。

UserControls实际上以一种有点奇怪的方式工作--当在构造函数中设置this.DataContext = this时,属性上的绑定实际上将相对于UserControl本身。

要解决这个问题,您必须确保不更改控件本身的DataContext。最简单的方法是将x:Name添加到根Grid (或UserControl内容中的任何控件),然后设置其DataContext

代码语言:javascript
复制
RootGrid.DataContext = this;

这样,您将把RootGrid的数据上下文设置为控件本身,但是用户控件的属性将绑定到相对于用户控件所在位置的数据上下文,此处绑定到列表项。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51876232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档