TheBigBearNow Ответов: 2

Вопрос о привязке данных C#


Привет всем, я пытаюсь загрузить combobox из статического списка класса US_State, который я сделал. Список заполняется в моем окне WPF всеми правильными данными, но мой combobox загружается, если я помещаю ComboboxState.ItemsSource = Get_States; в моем коде окна позади, но я думал, что смогу загрузить combobox, просто привязав его. Вот мой код, который у меня есть

public partial class ProfileScreen : Window
    {	//List populates with correct data
	public List<US_State> Get_States = StatesArray.Get_States;
     }
//xaml
<ComboBox x:Name="ComboboxState" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center" Width="120" HorizontalAlignment="Left" ToolTip="Enter your state."
                          ItemsSource="{Binding Get_States, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}, UpdateSourceTrigger=PropertyChanged}"
                          DisplayMemberPath="Name" SelectedValuePath="Abbreviation"/>


Мой код в Us_State использует интерфейс Inotify, а статический класс просто создает список<us_state> и загружает его.

Что я уже пробовал:

привязка данных не работает, но это работает в codebehind

2 Ответов

Рейтинг:
11

Richard Deeming

public List<US_State> Get_States = StatesArray.Get_States;

Привязка данных WPF работает только со свойствами. Вы объявили поле, которое не будет работать.

Если вы проверите окно вывода в Visual Studio, то увидите ошибку привязки данных, сообщающую вам, что свойство не существует.

Попробуйте изменить свое поле на свойство:
public List<US_State> Get_States => StatesArray.Get_States;


Рейтинг:
1

Aydin Homay

<ComboBox x:Name="ComboboxState" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center" Width="120" HorizontalAlignment="Left" ToolTip="Enter your state."

                          ItemsSource="{Binding Get_States} SelectedItem="{Binding SimpleStringProperty, Mode=TwoWay}" , UpdateSourceTrigger=PropertyChanged}"

                          DisplayMemberPath="Name" SelectedValuePath="Abbreviation"/>


Попробуйте это и посмотрите, будет ли это работать. Дайте мне знать, если нет.