Как я могу связать все таблицы в DataSet с DataGrid - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь привязать таблицы в DataSet к своим DataGrid, но не уверен, как мне это сделать, вот что я попробовал:

<ListView ItemsSource="{Binding CalibrationData.CalibrationValuestoWrite}">

    <DataGrid ItemsSource="{Binding}">
    </DataGrid>

</ListView>

Может быть, мне нужно создать DataTemplate?Любая помощь с благодарностью!

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Попробуйте эту надежду, это поможет вам

<DataGrid AutoGenerateColumns="False" Height="250" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="12,40,0,0" Name="mytbl" VerticalAlignment="Top" Width="479">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Col1" Width="50" />
                <DataGridTextColumn Header="Col2" Width="375"/>
                <DataGridTextColumn Header="Col3" Width="50"/>
            </DataGrid.Columns>
        </DataGrid>

Код позади

this.mytbl.DataContext = ds.Tables[0].DefaultView; 
0 голосов
/ 08 октября 2018

Вы можете привязать свойство ItemsSource только к IEnumerable.И вы определяете ItemTemplate для определения внешнего вида каждого элемента, который возвращает перечисляемое.

Так что, если CalibrationData.CalibrationValuestoWrite возвращает IEnumerable<DataTable> (свойство DataSet.Tables делает), и вы хотите отобразить DataGrid для каждого DataTable, это должно работать:

<ListView ItemsSource="{Binding CalibrationData.CalibrationValuestoWrite.Tables}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <DataGrid ItemsSource="{Binding}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
0 голосов
/ 08 октября 2018

Лучше связать с DataView, как в этом небольшом примере здесь:

(vm - это текстовый текст представления XAML).

XAML:

<DataGrid ItemsSource="{Binding MyGrid}">
</DataGrid>

C #, ViewModel

    public partial class vm : INotifyPropertyChanged
    {
      public event PropertyChangedEventHandler PropertyChanged;
      protected void OnPropertyChanged(string text)
      {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(text));
        }
      } 

      public vm()
      {
        DataTable dt;

        ...

        MyGrid = new DataView(dt);
      }

      private DataView _mygrid;
      public DataView MyGrid
      {
         get
         {
            return _mygrid;
         }
         set
         {
            _mygrid= value;
            OnPropertyChanged("MyGrid");
         }
      }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...