Наконец я нашел лучший и более простой ответ на свой вопрос, позвольте мне поделиться с вами, ребята:
Нам нужно определить класс как источник данных нашего поля со списком. Таким образом, все поля со списком должны иметь эти данные, и затем на основе свойства, которое мы устанавливаем (из источника данных сеток данных), должно быть выбрано и показано значение. Также нам нужно определить ресурс поля со списком в верхней части страницы или окна.
<Page.Resources>
<local:viewmodel x:Key="viewmodel"/>
</Page.Resources>
<Grid Margin="0,0,0,0">
<DataGrid Name="grid_doc" AutoGenerateColumns="True" HorizontalAlignment="Left" Height="100" Margin="31,55,0,0" VerticalAlignment="Top" Width="636">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="PublisherId"
ItemsSource="{StaticResource viewmodel}"
SelectedValueBinding="{Binding PublisherId , UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Value"
SelectedValuePath="Key">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
<ComboBox HorizontalAlignment="Left" Margin="130,193,0,0" VerticalAlignment="Top" Width="120"
ItemsSource="{StaticResource viewmodel}"
SelectedValue="{Binding PublisherId , UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Value"
SelectedValuePath="Key">
</ComboBox>
</Grid>
ПРИМЕЧАНИЕ: здесь я использовал Ключ и Значение для выбранных и отображаемых элементов. важно, даже ключ и значение неверны. ДОЛЖНО быть Значение и Ключ , с заглавными буквами .
Я выложил более простую версию, не перечисляя участников, это не имеет никакого значения. Вы можете создать свой список членов enum, а затем добавить его в свой класс viewmodel. Не имеет значения, имеет ли ваш класс viewmodel другие свойства. просто обязательно верните Enumerable данные или наследуйте от верхнего Enumerable класса, как я и сделал.
public partial class Document : Page
{
LibraryDataAccess.Model1 model;
List<LibraryDataAccess.Model.Document> list;
public Document()
{
model = new Model1();
list = new List<LibraryDataAccess.Model.Document>();
list = model.Documents.ToList();
InitializeComponent();
list.Add(new LibraryDataAccess.Model.Document { Id = 1, PublisherId = 2, Title = "sdfs" });
grid_doc.ItemsSource = list;
}
public class viewmodel : List<KeyValuePair<string,string>>
{
public viewmodel()
{
this.Add(new KeyValuePair<string, string>(1.ToString(), "s"));
this.Add(new KeyValuePair<string, string>(2.ToString(), "t"));
}
}
Благодаря предыдущему ответу и двум ссылкам, которые мне помогли:
1024 * связывание *
статический ресурс