我正在使用MVVM模式开发WPF应用程序。我在视图中有一个组合,而在视图模型中有两个列表(项目和组织)。根据组织列表项的不同,我必须绑定组织名称。例如,如果组织列表的Count属性为1,则组合框项目必须为“ ProjectName”;如果组织列表的Count属性大于1,则组合框项目应类似于“ ProjectName-OrganizationName”。这是我拥有的XAML代码:
<ComboBox x:Name="textBox3" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding Path=Projects}" DisplayMemberPath="Name" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=SelectedProject}">
</ComboBox>
我应该如何实现这个目的。希望能有所帮助。干杯。
我在视图模型中添加了属性projectFullName,但是得到了一个空的组合框:
public string ProjectFullName
{
get
{
if (this.organizations.ToList().Count > 1)
{
this.projectFullName = string.Format("{}{0} - {1}", this.selectedProject.Name, this.organizations.First(org => org.Id == this.selectedProject.OrganizationId).Name);
}
else if (this.organizations.ToList().Count == 1)
{
this.projectFullName = this.selectedProject.Name;
}
return this.projectFullName;
}
}
XAML代码:
<ComboBox x:Name="textBox3" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding Path=Projects}" DisplayMemberPath="{Binding Path=ProjectFullName}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=SelectedProject}">
</ComboBox>
您可以选择几种方法来实现此目的,但我认为最好的是:
在您的数据上下文中添加一个属性,该属性将称为“ FullName”或其他名称。这将返回:(伪)如果Projects count> 0,则返回Name +'-'+ ProjectName,否则返回Name
然后将DisplayMemberPath绑定到FullName。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句