Show / Hide Table of Contents

Практическое руководство. Обеспечение доступности данных для привязки в XAML

В этом разделе рассматриваются различные способы, которые можно сделать данные доступными для привязки в XAML, в зависимости от потребностей приложения.

Пример

Если у вас есть CLR объекта, вы бы хотели привязки из XAML, один из способов, вы можете сделать объект доступным для привязки является определение его как ресурс и присвойте ему x:Key. В следующем примере имеется Person объект с строковое свойство с именем PersonName. Person Объекта (в строке, выделено, содержащий <src> элемент) определен в пространстве имен SDKSample.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  SizeToContent="WidthAndHeight"
  Title="Simple Data Binding Sample">

  <Window.Resources>
    <src:Person x:Key="myDataSource" PersonName="Joe"/>
    <Style TargetType="{x:Type Label}">
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="12"/>
    </Style>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="25"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
    </Style>
    <Style TargetType="{x:Type TextBlock}">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="25"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="Padding" Value="3"/>
    </Style>
  </Window.Resources>
  <Border Margin="5" BorderBrush="Aqua" BorderThickness="1" Padding="8" CornerRadius="3">
    <DockPanel Width="200" Height="100" Margin="35">
      <Label>Enter a Name:</Label>
      <TextBox>
        <TextBox.Text>
          <Binding Source="{StaticResource myDataSource}" Path="PersonName"
                   UpdateSourceTrigger="PropertyChanged"/>
        </TextBox.Text>
      </TextBox>
      
      <Label>The name you entered:</Label>
      <TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
    </DockPanel>
  </Border>
</Window>

Затем можно привязать TextBlock управления к объекту в XAML, как выделенная строка содержит <TextBlock> показан элемент.

Кроме того, можно использовать ObjectDataProvider класса, как показано в следующем примере:

Warning

It looks like the sample you are looking for does not exist.

Привязка определяется так же, как выделенные строки, содержащей <TextBlock> показан элемент.

В данном конкретном примере результат одинаков: у вас есть TextBlock с текстовым содержимым Joe. Тем не менее ObjectDataProvider класс предоставляет функциональные возможности, такие как возможность привязки к результату метода. Вы можете использовать ObjectDataProvider , если вы нуждаетесь в функциях, он предоставляет.

Тем не менее, если выполнить привязку к объекту, который уже был создан, необходимо задать DataContext в коде, как показано в следующем примере.

DataSet myDataSet;

private void OnInit(object sender, EventArgs e)
{
  string mdbFile = Path.Combine(AppDataPath, "BookData.mdb");
  string connString = string.Format(
      "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile);
  OleDbConnection conn = new OleDbConnection(connString);
  OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM BookTable;", conn);

  myDataSet = new DataSet();
  adapter.Fill(myDataSet, "BookTable");

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}

Чтобы получить доступ к XML данные с помощью привязки XmlDataProvider , представлена в разделе привязка к данным XML с помощью XMLDataProvider и запросов XPath. Чтобы получить доступ к XML данные с помощью привязки ObjectDataProvider , представлена в разделе привязка к XDocument, XElement или LINQ для результатов запросов XML.

Сведения о многом, можно указать данные, при привязке к, см. в разделе Указание источника привязки. Сведения о типы данных можно привязать к или как реализовать собственные CLR объекты для привязки, см. в разделе Общие сведения об источниках привязки.

См. также

  • Общие сведения о привязке данных
  • Практические руководства
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX