Hello Everyone我正在寻找一种在我的页面上创建ListView的方法,该方法将根据点击的按钮而改变。
例如,如果单击“查看用户”按钮,我希望列表视图显示“名字”姓氏“”电子邮件“,如果按下”查看项目“按钮,我希望列表视图显示”项目名称“”描述” ......
所有这些数据都是从SQL服务器上撤下的。我希望用户基本上能够通过单击按钮在我创建的不同SQL语句之间切换,并在ListView中显示结果。
我不确定ListView是否是最佳选择或如何处理此问题。我想在设计时仍然维护MVVM。我正在寻找一些正确方向的输入或点。
谢谢!
答案 0 :(得分:0)
尝试创建User类。然后当您从dbo.Users SQL语句调用SELECT *并执行读取器时,您只需创建一个新的User对象,将所有sql数据解析为User对象(例如,名称的字符串,bday的日期时间等。 ..),并将所述User对象存储在运行sql语句时创建的List中。然后你可以编写一个foreach(User u in),在循环中创建一个字符串并将属性写入所述字符串,然后调用ListView.Items.Add()。只需格式化字符串,您希望如何实现所需的结果
答案 1 :(得分:0)
我最终做的是使用List视图样式数据触发器在两个不同的网格视图之间切换。在我的ViewModel中,我有一个名为ViewingProjects的布尔值,当按下我的按钮时,它被设置为true。这会在我绑定网格视图的两个不同项目源之间切换,当按下按钮时,我调用相应的GetUser()GetProject()函数,该函数更新我绑定的可观察集合,然后更新视图。
<ListView
Margin="0,50,0,0"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="MaxHeight" Value="150"/>
<Setter Property="ItemsSource" Value="{Binding Users}"/>
<Setter Property="View">
<Setter.Value>
<GridView AllowsColumnReorder="True" ColumnHeaderToolTip="Users">
<GridViewColumn Header="First Name" Width="Auto" DisplayMemberBinding="{Binding FirstName}"/>
<GridViewColumn Header="Last Name" Width="Auto" DisplayMemberBinding="{Binding LastName}"/>
<GridViewColumn Header="User Name" Width="Auto" DisplayMemberBinding="{Binding UserName}"/>
<GridViewColumn Header="Email" Width="Auto" DisplayMemberBinding="{Binding Email}"/>
<GridViewColumn Header="Employee Type" Width="Auto" DisplayMemberBinding="{Binding EmployeeType}"/>
</GridView>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ViewingProjects}" Value="True">
<Setter Property="ItemsSource" Value="{Binding ProjectsCount}"/>
<Setter Property="View">
<Setter.Value>
<GridView AllowsColumnReorder="True" ColumnHeaderToolTip="Projects">
<GridViewColumn Header="Project Name" Width="Auto" DisplayMemberBinding="{Binding Project_Name}"/>
<GridViewColumn Header="Phase" Width="Auto" DisplayMemberBinding="{Binding Phase}"/>
<GridViewColumn Header="Hours Logged" Width="Auto" DisplayMemberBinding="{Binding Total_Hours_Worked}"/>
<GridViewColumn Header="Date Started" Width="Auto" DisplayMemberBinding="{Binding StartDate}"/>
<GridViewColumn Header="Proposed End Date" Width="Auto" DisplayMemberBinding="{Binding ProposedCompletionDate}"/>
</GridView>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Style>
</ListView>