WPF绑定到标签不起作用?

时间:2011-03-23 08:04:53

标签: c# wpf binding

有一个网格视图,列出了类属性中的内容。类havinf四个属性,其中三个我绑定到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文件中绑定相同的datacontext两次。一个用于其他控件,一个用于其他控件

4 个答案:

答案 0 :(得分:2)

我怀疑您设置StatusDetail - 属性的值晚于创建控件 由于auto-properties不支持任何更改通知,因此标签不会知道存在某些数据,因此不会显示任何内容。
尝试为您的媒体资源INotifyPropertyChanged实施。这可能会解决您的问题。

答案 1 :(得分:1)

这可能是您在ListView范围内定义ItemsSource =“{Binding ProjectData}”并且您的Label不知道其绑定源的原因。将View的“DataContext”设置为“ProjectData”实例,这可能有所帮助。

答案 2 :(得分:1)

标签位于ListView之外,因此具有与网格行不同的DataContext。

我猜你当前的DataContext有一个名为ProjectData的IList<ProjectData>,否则ItemsSource绑定会失败。如果这是真的,那么StatusDetail应显示哪个项目?如果此标签应出现在每个网格行中,每个项目一次,则需要为其创建一个新列。

另外,看看你的输出窗口。绑定错误会在那里提供良好的错误消息。

答案 3 :(得分:0)

我总是将绑定设置为{Binding Path="StatusDetail"}

希望对你有所帮助。