Можете ли вы связать выбранный элемент в ListBox для отдельного объекта в WPF?

голоса
3

Если у меня есть два объекта, один из которых список элементов, а другой имеет свойство сохранения выбранного элемента другого списка, можно обновить выбранный элемент путем связывания в WPF?

Допустим, у меня есть эти две структуры данных:

public class MyDataList
{
    public ObservableCollection<Guid> Data { get; set; }
}

public class MyDataStructure
{
    public Guid ChosenItem { get; set; }
}

Можно ли привязать Listbox к экземпляру обоих объектов таким образом, что свойство ChosenItem получает значение по выбранному пункту ListBox?

EDIT: Для того, чтобы сделать вещи немного яснее, там может быть много случаев, когда MyDataStructure, каждый с выбранным пунктом из MyDataList. Список данных является общим для всех случаев, и мне нужен способ, чтобы выбрать элемент и сохранить этот выбор в MyDataStructure.

Задан 10/12/2008 в 03:32
источник пользователем
На других языках...                            


2 ответов

голоса
2

Я считаю, что вы должны быть в состоянии сделать это (не забудьте объявить локальное пространство имен):

<Window.Resources>
    <local:MyDataStructure x:Key="mds1" />
</Window.Resources>    
<ListBox ItemsSource="{Binding Data}" SelectedValue="{Binding Source={StaticResource mds1} Path=ChosenItem}"/>
Ответил 10/12/2008 в 05:12
источник пользователем

голоса
1

Сделать это два свойства внутри одного класса (Только для упрощения решения) и сделать код готов к недвижимости изменила событие

 public class MyDataList : INotifyPropertyChanged
{
    private Guid _choosen;

    public ObservableCollection<Guid> Data { get; set; }

    public Guid ChosenItem {
        get
        {
            return _choosen;
        }
        set 
        {
            _choosen = value;
            PropertyChanged(this, new PropertyChangedEventArgs("ChosenItem"));
        } 
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

создать экземпляр этого класса и привязывание к DataContext из ListBox Теперь писать код ListBox XAML, как показано ниже. SelectedValue связывание делает трюк здесь.

<ListBox ItemsSource="{Binding Data}" SelectedValue="{Binding Path=ChosenItem}" x:Name="listBox"/>
Ответил 10/12/2008 в 04:27
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more