有一个网格视图,列出了类属性中的内容。类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两次。一个用于其他控件,一个用于其他控件
答案 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"}
希望对你有所帮助。