WPF привязка к метке не работает? - PullRequest
0 голосов
/ 23 марта 2011

Существует сетка, в которой перечислено что-то из свойства класса. Класс havinf four свойство, из которых три я привязываю к 3 столбцам вида сетки и последнее свойство я привязываю к другой метке.

Вид сетки работает и связывает значения, но Lable не ... В чем причина?

public class ProjectData
{
     public string ProjectName {get;set;}
        public string MachineName {get;set;}
        public string MachineNumber {get;set;}
        public string StatusDetail {get;set;}
}

Вот xaml:

 <ListView 
            Grid.Row="1" 
            Grid.ColumnSpan="2" 
            Name="PrjtListView" 
            HorizontalContentAlignment="Stretch" 
            FontSize="15" Background="#FFF2F2B7" 
            BorderThickness="1"
            ItemsSource="{Binding ProjectData}">
            <ListView.View>
                <GridView AllowsColumnReorder="True" 
                      ColumnHeaderToolTip="appconfig servers"
                      ScrollViewer.CanContentScroll="True">
                     <GridViewColumn Header="Project Name" Width="400"
                                    DisplayMemberBinding="{Binding ProjectName}" />
                    <GridViewColumn Header="Build Machine" Width="150"
                                    DisplayMemberBinding="{Binding MachineName}"/>
                    <GridViewColumn Header="Port number" Width="120" 
                                DisplayMemberBinding="{Binding MachineNumber}"/>
                </GridView>
            </ListView.View>
        </ListView>
        <UniformGrid Grid.Row="2" Grid.Column="1" VerticalAlignment="Center">
            <Button Content="add to cctray" Margin="0,0,5,0" 
                    Command="{Binding AddToCCTray}"/>
        </UniformGrid>
        **<Label Grid.Row="2" Grid.Column="0" Name="lblTotalProjects" FontSize="12" FontStyle="Italic"
Content="{Binding StatusDetail}"></Label>**  
                 -->> This is not working

Это просто фрагмент кода, я дам другие подробности, если потребуется.

РЕДАКТИРОВАТЬ: Можем ли мы связать один и тот же текст данных дважды в одном файле xaml. Один для некоторых других элементов управления и один для некоторых других элементов управления

Ответы [ 4 ]

2 голосов
/ 23 марта 2011

Я подозреваю, что вы устанавливаете значение свойства StatusDetail позже, чем создаются элементы управления.
Поскольку auto-properties не поддерживает уведомления об изменениях, метка не будет знать, что есть какие-то данные, и, следовательно, не показывает никакого содержимого.
Попробуйте реализовать INotifyPropertyChanged для ваших свойств. Это, вероятно, решит вашу проблему.

1 голос
/ 23 марта 2011

Метка находится за пределами ListView и поэтому имеет другой DataContext, чем строки вашей сетки.

Я предполагаю, что ваш текущий DataContext имеет IList<ProjectData> с именем ProjectData, иначе привязка ItemsSource не будет выполнена. Если это правда, для какого элемента должен отображаться StatusDetail? Если этот ярлык должен появляться в каждой строке сетки, по одному разу для каждого элемента, вам необходимо создать для этого новый столбец.

Кроме того, взгляните на окно вывода. Ошибка привязки дает хорошие сообщения об ошибках там.

1 голос
/ 23 марта 2011

Это может быть причиной того, что вы определяете ItemsSource = "{Binding ProjectData}" в области видимости ListView, а ваша метка не знает его источника привязки. Установите «DataContext» вашего представления в экземпляр «ProjectData», это может помочь.

0 голосов
/ 23 марта 2011

Я всегда устанавливаю свою привязку на {Binding Path="StatusDetail"}

Надеюсь, это немного вам поможет.

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