WPF Databinding ListView к свойству объекта, который может быть ничем - PullRequest
3 голосов
/ 07 декабря 2011

Я пытаюсь создать окно с ListView и областью, где отображаются детали для выбранного объекта.В представлении списка отображаются элементы, хранящиеся в коллекции ObservableCollection(Of T).Элементы сами по себе также содержат коллекцию ObservableCollecton(Of T), которая затем должна отображаться в области сведений в другом ListView в соответствии с выбранным элементом первого ListView.

. Проблема: метод InitializeComponent () выбрасываетИсключение (XAMLParseException).

Исключение:
Set property 'System.Windows.Controls.GridViewColumn.DisplayMemberBinding' threw an exception.

InnerException:
Object of type 'System.String' cannot be converted to type 'System.Windows.Data.BindingBase'.

Line- и ColumNumer исключенияУказывая на <GridView> моего ListView (.View)

Это первый ListView

<ListView ItemsSource="{Binding Path=MyObjectCollection, Mode=OneWay}" SelectedItem="{Binding Path=Selected, Mode=OneWayToSource}">
   <ListView.View>
      <GridView>
         <GridViewColumn DisplayMemberBinding="{Binding Path=Name, Mode=OneWay}">
            <GridViewColumnHeader Content="Name" />
         </GridViewColumn>
      </GridView>
   </ListView.View>
</ListView>

И это второй ListView

<ListView ItemsSource="{Binding Path=SelectedItem.MySubCollection, Mode=OneWay}">
   <ListView.View>
      <GridView> <!-- Thats the Line where the Exception is pointing at -->
         <GridViewColumn Width="150" DisplayMemberBinding="Key">
            <GridViewColumnHeader Content="Key" />
         </GridViewColumn>
         <GridViewColumn Width="150" DisplayMemberBinding="Value">
            <GridViewColumnHeader Content="Value" />
         </GridViewColumn>
      </GridView>
   </ListView.View>
</ListView>

Итак.Как я могу связать с коллекцией Свойство объекта может быть ничего?

1 Ответ

3 голосов
/ 07 декабря 2011

Из сообщения об исключении проблема связана с вашим DisplayMemberBinding во втором просмотре списка.Потому что вы должны предоставить выражение Binding вместо строки , см. MSDN .Как в вашем первом списке:

<ListView ItemsSource="{Binding Path=SelectedItem.MySubCollection, Mode=OneWay}">
   <ListView.View>
      <GridView> <!-- Thats the Line where the Exception is pointing at -->
         <GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Key}">
            <GridViewColumnHeader Content="Key" />
         </GridViewColumn>
         <GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Value}">
            <GridViewColumnHeader Content="Value" />
         </GridViewColumn>
      </GridView>
   </ListView.View>
</ListView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...