você pode vincular o item selecionado em uma caixa de listagem a um objeto separado no WPF?

votos
3

Se eu tiver dois objetos, sendo um deles a lista de itens, e a outra com uma propriedade armazenar o item selecionado da outra lista, é possível atualizar o item selecionado através da ligação em WPF?

Vamos dizer que eu tenho essas duas estruturas de dados:

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

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

É possível ligar uma caixa de listagem para uma instância de ambos os objetos para que a propriedade ChosenItem fica definido pelo item selecionado da caixa de listagem?

EDIT: Para tornar as coisas um pouco mais claro, pode haver muitos casos de MyDataStructure, cada um com um item escolhido a partir MyDataList. A lista de dados é comum a todas as instâncias, e eu preciso de uma maneira de selecionar um item e armazenar essa seleção na MyDataStructure.

Publicado 10/12/2008 em 03:32
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Eu acredito que você deve ser capaz de fazer isso (certifique-se de declarar o namespace local):

<Window.Resources>
    <local:MyDataStructure x:Key="mds1" />
</Window.Resources>    
<ListBox ItemsSource="{Binding Data}" SelectedValue="{Binding Source={StaticResource mds1} Path=ChosenItem}"/>
Respondeu 10/12/2008 em 05:12
fonte usuário

votos
1

Faça isso duas propriedades dentro de uma única classe (Só para simplificar a solução) e tornar o código pronto para a propriedade mudou eventos

 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;
}

criar uma instância dessa classe e se ligam ao DataContext do ListBox Agora escrever o código ListBox XAML como o fole. A ligação SelectedValue está fazendo o truque aqui.

<ListBox ItemsSource="{Binding Data}" SelectedValue="{Binding Path=ChosenItem}" x:Name="listBox"/>
Respondeu 10/12/2008 em 04:27
fonte usuário

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