我无法让数据绑定在DataTemplate
以 Xamarin 形式。我可以让它与ListView
(即绑定RowHeight
),但一旦进入DataTemplate
,将内容设置为我的 ViewModel 的属性没有任何影响。
在下面的示例中,如果我设置ColumnDefinition.Width
对于属性,它完全被忽略,但是将其设置为硬值可以正常工作。我已经添加了一个标签来查看属性值是什么,但在里面时它显示为空白Datatemplate
,并且我已重新检查该属性是否正确,因为如果我将标签从Listview
,它显示正确的值。
有任何想法吗?
UPDATE:
我的类是“ParentPage”,它有 2 个属性:“患者”和“设置”。患者有一个可观察的“PatientList”集合,我如何绑定到标签中下面显示的“Settings.Fontsize”。我尝试了所有我能想到的组合:
<ListView x:Name="listView" ItemsSource="{Binding ParentPage.Patients.PatientsList}" RowHeight="{Binding ParentPage.Settings.RowHeight}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid HorizontalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Grid.Row="0" Grid.Column="0"
Source="{Binding Picture}" />
<Label TextColor="Red" Text="{Binding ParentPage.Settings.FontSize}"
HorizontalOptions="Center" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
BindingContext,换句话说,列表视图的“ItemsSource”,适用于整个列表视图,包括 DataTemplate。因此,如果您想绑定某些内容,那么它的属性应该位于 BindingContext 中,在您的情况下它是患者。因此,Pasient 类应该包含此属性。但是,有一个技巧。如果您想要绑定不在列表视图绑定上下文中的内容,那么您应该命名列表视图,例如 x:Name = "YourListView",然后在绑定的数据模板中编写以下内容:
Property="{Binding Source={x:Reference Name = "YourListView"},
Path=BindingContext.YourNameOfPropertyInViewModel}"
这样,您的属性将使用列表视图元素级别的绑定上下文,即您的情况下的 ViewModel。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)