2016-02-18 7 views
0

У меня есть ListView с 3 колонками:ListView ItemsSource связывания

<ListView ItemsSource="{Binding ParamName}" HorizontalAlignment="Left" Height="109" Margin="10,87,0,0" VerticalAlignment="Top" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Width="281"> 
    <ListView.View> 
     <GridView> 
      <GridView.ColumnHeaderContainerStyle> 
       <Style TargetType="{x:Type GridViewColumnHeader}"> 
        <Setter Property="IsEnabled" Value="False"/> 
        <Style.Triggers> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter Property="TextElement.Foreground" Value="Black"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </GridView.ColumnHeaderContainerStyle> 
      <GridViewColumn Header="Name" Width="60"/> 
      <GridViewColumn Header="Type" Width="60"/> 
      <GridViewColumn Header="Content" Width="156"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

В настоящее время я поставил ParamName как мой ItemsSource, который, очевидно, не достичь желаемого результата таким образом.

В моей модели ViewModel у меня есть ObservableCollections для каждой колонки (ParamName для имени, ParamType для типа и ParamContent для контента). Эти ObservableCollections правильно заполнены, и я могу получить их данные через Binding, но я не могу заполнить колонки соответствующими данными.

Я думал о некоторых возможных решениях, но никто из них, похоже, не работает. Какой был бы лучший подход для этой проблемы?

Вот как это выглядит (слева) и как это должно выглядеть так (справа):

How it is How it should be

Называя их после того, как их типы могут быть немного запутанным.

+1

У вас есть три (3) Коллекции? Зачем? Вы связываете только одну коллекцию, как я понимаю - и все столбцы дерева имеют одинаковые значения? Попробуйте изменить ParamNames, чтобы убедиться, что это так. Если мое предложение правильное - попробуйте сделать одну коллекцию сложного типа, содержащую все ваши значения: ObservableCollection , где MyRow - класс с необходимыми свойствами. –

+0

@Shwed_Berlin Да, это проблема, которая у меня есть. У меня есть 3 разных коллекции, и я хотел бы привязать одну коллекцию к каждому столбцу. – Kohnarik

+0

попробуйте сделать одну коллекцию сложного типа, содержащую все ваши значения: ObservableCollection , где MyRow - класс с необходимыми свойствами. _P.S. Извините, у меня проблемы с редактированием моего комментария:) _ –

ответ

2

У вас есть три коллекции, но только одна привязана. Таким образом, все столбцы имеют одинаковое значение. Попробуйте создать одну коллекцию, содержащую все, что вам нужно:

ObservableCollection<MyRow> 

где MyRow является классом или структурой со свойствами, которые необходимо.

Если у вас уже есть эти коллекции - попробуйте объединить его в одну крупную коллекцию и расскажите GridColumns, какие свойства вы хотите привязать к каждому столбцу, но я не уверен, возможно ли это с ObservableCollections - что, если у них есть разные длина?

И вы все еще можете создать свою собственную коллекцию из этих трех - просто разобрать его ...

+0

Я думаю, что этот подход будет работать. Спасибо. – Kohnarik

Смежные вопросы