Связывание свойства ширины GrivdViewColumn в XAML или в коде? - PullRequest
0 голосов
/ 21 декабря 2011

Я хотел бы связать свойство ширины GrivdViewColumn с моей моделью представления.Допустим, экземпляр ViewModel является Datacontext of the Window.В ViewModel есть свойства с именами IdWidth, LastNameWidth, FirstNameWidth.И это Окно содержит следующий данный ListVeiw в stackPanel.Все хорошо, но как-то свойство Width GridViewColumn не связано.Пожалуйста, отправьте код, убедившись, что он работает.

<ListView Name="PatientListView"
          ItemsSource="{Binding Patients}"
          SelectionMode="Single">
  <ListView.View>
    <GridView>
      <GridView.Columns>
        <GridViewColumn Header="Patient-Id"
                        Width="{Binding IdWidth, Mode=TwoWay}"
                        DisplayMemberBinding="{Binding PatientId}"/>

        <GridViewColumn Header="Last Name"
                        Width="{Binding LastNameWidth, Mode=TwoWay}"
                        DisplayMemberBinding="{Binding LastName}"/>

        <GridViewColumn Header="Last Name"
                        Width="{Binding FirstNameWidth, Mode=TwoWay}"
                        DisplayMemberBinding="{Binding FirstName}" />
      </GridView.Columns>
    </GridView>
  </ListView.View>
</ListView>

Ответы [ 2 ]

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

Принятый ответ неверен, как указано в моем комментарии, и, глядя на ваши пути, вы, вероятно, ожидаете, что DataContext будет элементом, который не может работать (есть несколько элементов для начала, которые следует выбрать?).

DataContext столбцов - это DataContext из ListView.

В этом примере будет приведен столбец с заголовком Lorem Ipsum:

<ListView>
    <ListView.DataContext>
        <Label Content="Lorem Ipsum"/>
    </ListView.DataContext>
        <ListView.View>
            <GridView>
                <GridViewColumn Header="{Binding Content}"/>
            </GridView>
    </ListView.View>
</ListView>

Также вас может заинтересовать эта статья об отладке привязок данных .

2 голосов
/ 21 декабря 2011

Редактировать: FrameworkElement не требуется для привязки данных, извините за неправильную интерпретацию цитаты из MSDN ниже. Смотрите комментарии и @ H.B. ответ

GridViewColumn не наследуется от FrameworkElement , который требуется для привязки данных.

см. MSDN:

Поддержка привязки данных и ссылок на динамические ресурсы : [...], но возможность разрешить значение члена, которое хранится как выражение (программная конструкция, которая лежит в основе как привязки данных, так и динамических ресурсов ) реализуется FrameworkElement

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