【问题标题】:Metro App XAML Data BindingMetro App XAML 数据绑定
【发布时间】:2014-02-11 08:38:49
【问题描述】:

我是 XAML 和 Metro 应用程序开发的新手,并且刚刚开始构建非常基本的 Windows 商店应用程序。

我在理解 XAML 绑定过程以及 XAML 绑定如何发生方面遇到问题。

请帮帮我。

【问题讨论】:

  • 如果你提供一些你的代码会更清楚。或者希望您有一些链接来阅读基于 XAML 的应用程序中的绑定?

标签: c# xaml binding microsoft-metro


【解决方案1】:

XAML 中的绑定是大主题。简而言之:您应该设置DataContextDataSource 以供您这样控制:

<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 overviewQuickstart: Data binding to controls 中找到有关绑定的更多信息

【讨论】:

    【解决方案2】:

    数据绑定窗口商店应用:- 考虑一个场景,你有一个 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() 方法。 我希望现在你清楚了:)。 谢谢和问候,

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 2015-11-23
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多