WPF ComboBox привязать текст к выбранному элементу - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь связать ComboBox с коллекцией:

<ComboBox  Margin="4 0 2 0"
    ItemsSource="{Binding YAxes}"
    SelectedItem="{Binding SelectedYAxis, Mode=TwoWay}"
    DisplayMemberPath="AxisTitle"
    SelectedValuePath="AxisTitle"/>

Все хорошо, кроме Text этого ComboBox. При выборе элемента установщик SelectedYAxis запускает и уведомляет, что свойство было изменено:

private IAxis _selectedYAxis;
    public IAxis SelectedYAxis
    {
        get => _selectedYAxis;
        set
        {
            _selectedYAxis = value;
            OnPropertyChanged(nameof(SelectedYAxis));
        }
    }

, но текст ComboBox никогда не изменяется на выбранные элементы AxisTitle. Как отобразить AxisTitle из SelectedItem в виде текста ComboBox?

UPD : текст никогда не отображается, даже если он установлен явно:

<ComboBox  Margin="4 0 2 0"
    ItemsSource="{Binding XAxes}"
    SelectedItem="{Binding SelectedXAxis, Mode=TwoWay}"
    DisplayMemberPath="AxisTitle"
    Text="Asdasd"/>

Он не устанавливает текст ComboBox в «Asdasd».

UPD 2 : я изменил вещи для использования DataTemplate, но это не сработало а также:

<ComboBox  Margin="4 0 2 0"
           ItemsSource="{Binding YAxes}"
           SelectedItem="{Binding SelectedYAxis, Mode=TwoWay}"
           ItemTemplate="{StaticResource AxisCBTextTemplate}"/>

и раздел ресурса выше:

<DataTemplate x:Key="AxisCBTextTemplate">
    <TextBlock Text="{Binding AxisTitle}"/>
</DataTemplate>

UPD 3 Иллюстрация к тому, что я имею в виду:

ComboBox text does never update

Задача отображения некоторого выделенного текста должна быть тривиальной, но с трудностями.

1 Ответ

0 голосов
/ 31 марта 2020

Я нашел причину root этой проблемы. Каждый IAxis (это SciChart объект оси) из XAxes и YAxes уже отображается на графике (то есть связан). Привязка их к другим элементам управления (например, ListBox) вызывает исключение: «Необходимо отключить указанный дочерний элемент от текущего родительского Visual перед подключением к новому родительскому Visual.», Я обнаружил это при попытке привязать их к ListBox.

Кажется как ComboBox ловит такие исключения и не выводит StackTrace для любого случая. В моем случае это исключение было заключено в NullReferenceException и возникло только при нажатии на ComboBox, для которого не установлено ItemTemplate. Хотя я могу быть не совсем прав в деталях, замена XAxes и YAxes на наборы строк решает эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...