Exception when Data Binding ListBox

0

I am implementing an application in MVVM. Right now I am trying to create an autocomplete that queries a database for potential results. The issue I am having right now is that when I try to set the Collection Property for the Listbox, I get this exception:

  System.Windows.Markup.XamlParseException occurred
  HResult=0x80131501
  Message=A 'Binding' cannot be set on the 'Path' property of type 'Binding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
  Source=<Cannot evaluate the exception source>

Here is my implementation:

XAML

<Border Margin="5,2,5,5" Grid.Row="1" Height="Auto"
                    BorderBrush="DarkBlue"
                    BorderThickness="1" CornerRadius="4">
    <ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="40">
        <DockPanel x:Name="DockPanelA" Margin="1,1,1,1" Background="White" Height="Auto">
            ....
            <TextBox x:Name="TextBoxA" Background="{x:Null}" 
                     BorderThickness="0" Width="Auto"
                     CaretBrush="SteelBlue" FontSize="14" Foreground="SteelBlue" FontFamily="Calibri" TextAlignment="Left"
                     TextChanged="TextBoxA_TextChanged"/>
        </DockPanel>
    </ScrollViewer>
</Border>
<ListBox Grid.Row="1" Margin="5,2,5,5" MaxHeight="200" Width="{Binding ActualWidth, ElementName=DockPanelA}"
             ScrollViewer.VerticalScrollBarVisibility="Auto"  HorizontalAlignment="Stretch"
             Background="AliceBlue" BorderBrush="DarkBlue" Foreground="SteelBlue" VirtualizingStackPanel.IsVirtualizing="False"
             ItemsSource="{Binding Path=MyCollection, Mode=TwoWay}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0} {1}">
                        <Binding Path="{Binding Symbol}"/>
                        <Binding Path="{Binding Name}"/>
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

C# ViewModel

public class ViewModel : INotifyPropertyChanged
{
    private ObservableCollection<ListData> _myListItems;

    ...
    public ObservableCollection<ListData> MyListItems
    {
        get { return _myListItems; }
        set { _myListItems = value; NotifyPropertyChanged("MyListItems"); }
    }
    ...

    protected virtual void NotifyPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = this.PropertyChanged;
        if (handler != null)
        {
            var e = new PropertyChangedEventArgs(propertyName);
            handler(this, e);
        }
    }
    ...
    public void DataSearch(object param)
    {
        ...
        Task t = Task.Run(async () =>
        {
            await Task.Delay(5000);
            try
            {
                currSrc.Token.ThrowIfCancellationRequested();
                IList<ListData> newList = Helper.QueryData(searchString);
                currSrc.Token.ThrowIfCancellationRequested();

                MyListItems = new ObservableCollection<ListData>(newList);
                //Exception is Thrown from this
            }
            catch (Exception e)
            {
            }
        });
        ...
    }
    ...
}
public class InputHandler : ICommand
{
    //View calls this and this calls DataSearch as a result
}

I've been trying to figure out why this is happening since other properties that I've databinded this way work properly. Does anyone know why this exception is thrown and how to fix it?

c#
wpf
xaml
mvvm
listbox
asked on Stack Overflow May 11, 2017 by Informat

1 Answer

1
<ListBox.ItemTemplate>
    <DataTemplate>
        <TextBlock>
            <TextBlock.Text>
                <MultiBinding StringFormat="{}{0} {1}">
                    <Binding Path="Symbol"/>
                    <Binding Path="Name"/>
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </DataTemplate>
</ListBox.ItemTemplate>
answered on Stack Overflow May 11, 2017 by mvermef

User contributions licensed under CC BY-SA 3.0