Получить список выбранных значений в MVVM - PullRequest
0 голосов
/ 11 мая 2018

У меня есть MainWindow, которое содержит список и ContentControl, каждый раз, когда вы выбираете что-то из списка, ContentControl будет отображать что-то еще.

   <ContentControl Content="{Binding ElementName=SomeList, Path=SelectedItem.Content}" />

  <ListBox  x:Name="SomeList" Margin="0 16 0 16" SelectedIndex="0"  SelectedValue="{Binding X}"            
                         ItemsSource="{Binding DemoItems}">

ViewModel:

 private string _X;
    public string X

    {
        get { return _X; }
        set
        {
            _X = value;
            NotifyOfPropertyChange("X");
        }
    }

Попытка отобразить X приведет к тому же:

namespace.DemoItem

DemoItem.cs:

 public class DemoItem : INotifyPropertyChanged
{
    private object _icon;
    private string _name;
    private object _content;
    private Thickness _marginRequirement;

    public DemoItem(object icon, string name, object content, Thickness margin,  IEnumerable<DocumentationLink> documentation)
    {
        _icon = icon;
        _name = name;
        Content = content;
        _marginRequirement = margin;

        Documentation = documentation;
    }
} 

Так как можно получить только имя?

1 Ответ

0 голосов
/ 11 мая 2018

Привязка данных работает только с открытыми свойствами. Так что добавьте Name свойство

public class DemoItem : INotifyPropertyChanged
{
    ...
    public string Name { get { return _name; } }
}

Предполагая, что вы намерены выбрать DemoItem его Name, вы должны также установить ListBox SelectedValuePath в сочетании с SelectedValue:

<ListBox ItemsSource="{Binding DemoItems}"
         SelectedValuePath="Name"
         SelectedValue="{Binding X}" />

Затем просто отобразите имя выбранного элемента следующим образом:

<TextBlock Text="{Binding X}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...