【发布时间】:2014-02-11 08:38:49
【问题描述】:
我是 XAML 和 Metro 应用程序开发的新手,并且刚刚开始构建非常基本的 Windows 商店应用程序。
我在理解 XAML 绑定过程以及 XAML 绑定如何发生方面遇到问题。
请帮帮我。
【问题讨论】:
-
如果你提供一些你的代码会更清楚。或者希望您有一些链接来阅读基于 XAML 的应用程序中的绑定?
标签: c# xaml binding microsoft-metro
我是 XAML 和 Metro 应用程序开发的新手,并且刚刚开始构建非常基本的 Windows 商店应用程序。
我在理解 XAML 绑定过程以及 XAML 绑定如何发生方面遇到问题。
请帮帮我。
【问题讨论】:
标签: c# xaml binding microsoft-metro
XAML 中的绑定是大主题。简而言之:您应该设置DataContext 或DataSource 以供您这样控制:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ComboBox x:Name="ComboBox1" ItemsSource="{Binding}"
Foreground="Black" FontSize="30" Height="50" Width="780"/>
</Grid>
在你的代码中写:
public class Recording
{
public string Artist { get; set; }
public string Name { get; set; }
public DateTime ReleaseDate { get; set; }
}
public ObservableCollection<Recording> MyMusic = new ObservableCollection<Recording>();
MyMusic.Add(new Recording("Chris Sells", "Chris Sells Live",
new DateTime(2008, 2, 5)));
MyMusic.Add(new Recording("Luka Abrus",
"The Road to Redmond", new DateTime(2007, 4, 3)));
MyMusic.Add(new Recording("Jim Hance",
"The Best of Jim Hance", new DateTime(2007, 2, 6)));
// Set the data context for the combo box.
ComboBox1.DataContext = MyMusic;
您可以在Data binding overview 和Quickstart: Data binding to controls 中找到有关绑定的更多信息
【讨论】:
数据绑定窗口商店应用:- 考虑一个场景,你有一个 JSON 文件,并且你已经写了客户的名字。现在店主要求你取所有的名字。无需遍历所有名称(txt 文件),只需简单地绑定所有名称即可显示。
首先你需要什么?
1. 一个文本文件/数据。
2. 讲述您的合同的课程。
3. 数据绑定编码。
我在 Assets 文件夹中创建了一个 Data.txt 文件。
[
{"Name" : "Google" , "Surname" : "Inc."},
{"Name" : "Stack" , "Surname" : "overflow"}
]
2。步骤:我创建了一个类。我的数据
[DataContract]
class myData {
[DataMember]
public string Name { get; set; }
[DataMember]
public string Surname { get; set; }
}
这里的 [DataContract] 表示您正在签署合同并发送到 客户端是您的系统(仅用于理解目的)。
第 3 步:现在我创建了一个名为 loadData() 的方法,它将获取所有名称。
public async void loadData() {
ObservableCollection<string> n = new ObservableCollection<string>();
StorageFile sf = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Assets\Data.txt");
var data = await FileIO.ReadTextAsync(sf);
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(List<myData>));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data));
List<myData> nm = (List<myData>)json.ReadObject(ms);
foreach (var item in nm)
{
n.Add(item.Name);
}
names.DataContext = n;
}
现在我在提交/按钮点击时调用了这个 loadData() 方法。 我希望现在你清楚了:)。 谢谢和问候,
【讨论】: