gpt4 book ai didi

xaml - DataTemplate 中 ViewMode 的 WinRT 绑定(bind)数据

转载 作者:行者123 更新时间:2023-12-02 03:14:37 26 4
gpt4 key购买 nike

我想将数据绑定(bind)到存储在 ViewModel 中的 DataTemplate 中。我尝试了几种方法但没有成功,WPF 的解决方案似乎不适用于 WinRT,例如 RelativeSource 的 AncestorType 属性。

<Page.DataContext>
<local:ViewModel x:Name="ViewModel" />
</Page.DataContext>

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView ItemsSource="{x:Bind ViewModel.names}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:mydatatype">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<!--Here I want a TextBlock to show the number-->
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>

这是 View 模型

public class ViewModel
{
public int Number = 42;
public List<mydatatype> names = new List<mydatatype>();
public ViewModel()
{
names.Add(new mydatatype("name1"));
names.Add(new mydatatype("name2"));
}
}

public class mydatatype
{
public string Name { get; set; }
public mydatatype(string name)
{
this.Name = name;
}
}

最佳答案

您可以通过给其他对象命名然后引用它来访问其他对象的 DataTemplate。使用这种技术,您应该能够访问其 DataContext 以直接绑定(bind)到 View 模型,甚至可以从 DataTemplate 中访问

<Page x:Name="PageRoot">
<Page.DataContext>
<local:ViewModel x:Name="ViewModel" />
</Page.DataContext>

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="MainPanel">
<ListView ItemsSource="{x:Bind ViewModel.names}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:mydatatype">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding DataContext.Name, ElementName=PageRoot}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Page>

关于xaml - DataTemplate 中 ViewMode 的 WinRT 绑定(bind)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com