我正在尝试使用CollectionViewSource实现一些组合框排序.此组合框实际上是数据模板的一部分,并在列表视图中重复.我的第一种方法似乎有效(使用CollectionViewSource),但我的所有组合框都共享相同的数据上下文.这使得每当其他一个盒子被改变时,所有其他盒子都改变以反映 - 而不是期望的副作用.
我决定退回并尝试使用内联xaml来实现一个基本的组合框(不在数据模板中)来指定CollectionViewSource(而不是将cvs创建为静态资源).我无法成功显示数据.因为我还是WPF的新手,所以我可能会完全错误.
这是我的组合框的xaml:
<ComboBox>
<ComboBox.ItemsSource>
<Binding>
<Binding.Source>
<CollectionViewSource Source="{Binding Path=Configurations}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="AgencyName" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Binding.Source>
</Binding>
</ComboBox.ItemsSource>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
此组合框所在的用户控件的DataContext绑定到一个对象,该对象具有名为Configurations的ObservableCollection,并且每个配置都有一个名为AgencyName的属性.我已经证实使用没有cvs的标准绑定可以正常工作,所以我知道在那个协议中一切都很好.
任何帮助都会非常感激,因为我找不到我的老板的借口:).我也不想下载代码并在后面的代码中进行排序(我可以在构建ObservableCollection时使用,但是违反DRY原则的恕我直言).
我目前在插件体系结构中使用MEF。我将要混淆我的代码,并且我担心这是否会破坏MEF及其发现。我正在使用DirectoryCatalog来解析插件,我也计划对插件进行混淆。一些扩展名也可以在主组件中运行,这些扩展名也将被混淆。
所以,我的问题是,MEF是否会成为一个问题(混淆)?如果是,Unity是否也会遭受同样的困扰?先感谢您。
我有一个绑定到模型对象列表的组合框.我已将组合框SelectedItem绑定到作为模型类型的属性.加载窗口后,我的所有数据绑定都能很好地工作.SelectedItem设置正确,我可以直接使用存储库保存对象.
问题是当窗口第一次加载时我初始化SelectedItem属性并且我的组合框没有显示任何内容.在我移动到绑定到对象之前,我绑定到一个字符串列表,并且在初始化时工作得很好.我知道我错过了什么,但我无法理解.
提前感谢您提供的任何指导.
(关于此页面布局的一个注释.组合框实际上是ListView中使用的另一个ItemTemplate的一部分.ListView绑定到主MV中的一个可观察集合.这个可观察集合的每个项本身就是一个ModelView.这是第二个具有SelectedItem属性的ModelView.)
这是我的模型:
public class DistributionListModel : Notifier, IComparable
{
private string m_code;
private string m_description;
public string Code
{
get { return m_code; }
set { m_code = value; OnPropertyChanged("Code"); }
}
public string Name
{
get { return m_description; }
set { m_description = value; OnPropertyChanged("Name"); }
}
#region IComparable Members
public int CompareTo(object obj)
{
DistributionListModel compareObj = obj as DistributionListModel;
if (compareObj == null)
return 1;
return Code.CompareTo(compareObj.Code);
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
这里是我的ModelView中的相关代码:
public MailRoutingConfigurationViewModel(int …Run Code Online (Sandbox Code Playgroud) 我需要将TextBox的Text绑定到类的属性,该类本身就是我的DataContext的属性.所以,例如,如果我有一个名为ServerInstance的类,它有一个名为Name的字符串属性.我将ServerInstance作为一个名为SelectedInstance的属性暴露在我的代码后面(在本例中为viewmodel).我的问题是如何将TextBox绑定到SelectedInstance属性的Name属性?
这是我的ViewModel/Code背后:
public class ViewModel : Notifier
{
private MobileServerInstance m_instance = null;
private RelayCommand m_addCommand = null;
private RelayCommand m_clearCommand = null;
public MobileServerInstance ServerInstance
{
get { return m_instance; }
set { m_instance = value; OnPropertyChanged("ServerInstance"); }
}
public ICommand AddCommand
{
get
{
if (m_addCommand == null)
{
m_addCommand = new RelayCommand(parameter=>Add(parameter), parameter=>CanAdd(parameter));
}
return m_addCommand;
}
}
public ICommand ClearCommand
{
get
{
if (m_clearCommand == null)
{
m_clearCommand = new RelayCommand(parameter => Clear(parameter), parameter => …Run Code Online (Sandbox Code Playgroud)