【问题标题】:Why only Column Heading is displayed not Column data (Is Logic of Mv vM wrong ?)为什么只显示列标题而不显示列数据(Mv vM 的逻辑是否错误?)
【发布时间】:2014-06-02 05:50:46
【问题描述】:

我是使用 c# 和 xaml 的 silverlight 应用程序的初学者。 我想做的是显示如下信息:

SerialNumber  FirstName LastName //These are headings and below is the data
s0             ss1       ss1L
s1             ss2       ss2L 

其中s0 ss1 ss1L 和 s1 ss2 ss2L 必须是 List

我的问题是:

它只显示标题而不显示下面的数据,如下所示:http://prntscr.com/3axadr 但标题下面什么也不显示。

我的代码如下:

我的项目名称是 DEV_CENTERMainPage.Xaml

<UserControl x:Class="DEV_CENTER.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:vm="clr-namespace:DEV_CENTER"
             xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <UserControl.Resources>
        <vm:ProgramViewModel x:Key="ProgramViewModel"/>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" Background="White">
        <data:DataGrid Grid.Row="0" x:Name="gridPrograms" AutoGenerateColumns="False" ItemsSource="{Binding Path=Ssss1 }" IsReadOnly="True"  DataContext="{StaticResource ProgramViewModel}" >
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="SerialNumber" Binding="{Binding Path=sss1}" Width="2*"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="FirstName" Binding="{Binding Path=sss2}" Width="2*"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="LastName" Binding="{Binding Path=sss3}" Width="3*"></data:DataGridTextColumn>
            </data:DataGrid.Columns>
        </data:DataGrid>
    </Grid>
</UserControl>

您可以使用所有代码进行测试。有人可以告诉我为什么它不显示 " s0 ss1 ss1L"s1 ss2 ss2L 吗? Mvvm 逻辑有什么问题吗?还是别的什么?

【问题讨论】:

    标签: c# silverlight data-binding mvvm model-binding


    【解决方案1】:

    您的绑定都是错误的 - 您绑定到奇怪的属性名称。您的代码中是否确实存在这种情况,或者您在编写问题时是否搞砸了?

    不管怎样,你的网格应该是这样的:

    <data:DataGrid Grid.Row="0" x:Name="gridPrograms" AutoGenerateColumns="False" ItemsSource="{Binding Path=Programs}" IsReadOnly="True"  DataContext="{StaticResource ProgramViewModel}" >
        <data:DataGrid.Columns>
            <data:DataGridTextColumn Header="SerialNumber" Binding="{Binding Path=SerialNumber}" Width="2*"></data:DataGridTextColumn>
            <data:DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" Width="2*"></data:DataGridTextColumn>
            <data:DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" Width="3*"></data:DataGridTextColumn>
        </data:DataGrid.Columns>
    </data:DataGrid>
    

    此外,调试时查看 Visual Studio 的输出窗口总是很好的 - 它可能包含有用的绑定错误消息,可让您了解 xaml 未按预期运行的原因。

    【讨论】:

    • 有一个奇怪的问题:当我尝试将“ItemsSource="{Binding Path=Ssss1}" 更改为“ItemsSource="{Binding Path=Programs}" 并保存它时。 Visual Studio 崩溃,我需要重新启动。它无法改变它。 (但它保存了 Binding="{Binding Path=SerialNumber}" 和 2 个类似的更改)但无法保存 ItemsSource="{Binding Path=Programs}" 任何想法为什么?
    • 它给出这样的窗口prntscr.com/3ay6jj 然后VStudio关闭。
    • 对不起,我帮不了你
    • 好的,我将其标记为答案,但由于 VStudio 崩溃问题将前一部分替换为“ItemsSource =“{Binding Path = Programs}”,我仍然没有测试。这个崩溃很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多