Я новичок в WPF и просто пытаюсь привязать голову к привязке, я могу получить привязку datagrid, но я должен сделать это определенным образом. Вот мой класс, что если я захвачу данные в конструкторе, как показано, он работает. У меня есть datacontext, связанный с классом Attorney, и источник элемента в свойство AttyList. У меня также работает INotifyChanged.WPF привязка к DataGrid
public class Data : CommonBase
{
public Data()
{
getAtty();
}
private List<Attorneys> _AttyList;
public List<Attorneys> AttyList
{
get { return _AttyList; }
set
{
if(value != this._AttyList)
{
_AttyList = value;
NotifyPropertyChanged("AttyList");
}
}
}
public void getAtty()
{
AttyList = new List<Attorneys>();
using (var context = new Context())
{
AttyList = context.Attorney.ToList();
}
}
}
Но, позволяет сказать, что я не хочу называть getAtty() в конструкторе, но в коде позади файла Xaml, как это так,
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var odata = new Data();
odata.getAtty();
}
По какой-то причине, DataGrid Безразлично Население? Я знаю, что могу сделать это в конструкторе первого сообщения кода, но если я хочу называть его индивидуально, а не когда у меня есть новый экземпляр, я не могу. Что я делаю не так?
Edit: Вот большинство моих XAML:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:testWPF"
xmlns:Models="clr-namespace:testWPF.Models" x:Class="testWPF.MainWindow"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525" WindowState="Maximized" Loaded="Window_Loaded">
<Grid>
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF3E0213" Offset="0.116"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FF970202" Offset="0.983"/>
</LinearGradientBrush>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="35*"/>
<ColumnDefinition Width="12*"/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="dgvAllAttorneys" HorizontalAlignment="Left" Margin="84,26,0,0" MouseDoubleClick="dgvAllAttorneys_MouseDoubleClick" VerticalAlignment="Top" Height="154" Width="208" ItemsSource="{Binding AttyList}" AutoGenerateColumns="False" SelectionMode="Single" IsReadOnly="True" Grid.ColumnSpan="1">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FirstName}" ClipboardContentBinding="{x:Null}" Header="FirstName"/>
<DataGridTextColumn Binding="{Binding FullName}" ClipboardContentBinding="{x:Null}" Header="LastName" Width="*"/>
</DataGrid.Columns>
<DataGrid.DataContext>
<Models:Data/>
</DataGrid.DataContext>
</DataGrid>
</Grid>
Это поможет, если вы вывесили ваш XAML также. –
Как упоминалось другими, используйте список ObservableCollection вместо списка. Кроме того, как вы привязываете свою сетку к коллекции? – PoweredByOrange
Я добавил свой XAML, там не очень много. Я попробовал коллекцию Observable. Все еще не было заполнение Грида. Если я вызову getAtty() из конструктора класса Data, сетка работает нормально. – Dylan