我的枚举不对我的联系人管理器具有约束力。
我有一个枚举类
[Serializable]
public enum Group
{
Friend,
Family,
Coworker
}
}
然后我有我的MainWindow初始化我的联系人管理器
public partial class MainWindow : Window
{
//public List<Contact> ContactList = new List<Contact>();
public ObservableCollection<Contact> ContactList = new ObservableCollection<Contact>();
string fileName = null;
Contact furqan = new Contact("Herp Derp");
Contact rizwan = new Contact("Merp Meep");
public MainWindow()
{
InitializeComponent();
myItemsControl.ItemsSource = ContactList;
//myComboBox.ItemsSource = Enum.GetValues(typeof(Group));
//myComboBox.ItemsSource = Enum.GetValues(typeof(Group)).Cast<Group>();
furqan.HomePhone = "801238421";
ContactList.Add(furqan);
ContactList.Add(rizwan);
this.DataContext = this;
}
我的XAML看起来像这样
<Label Grid.Row="7" Content="Home Email:"/>
<TextBox Grid.Row="7" Text="{Binding ElementName=myItemsControl, Path=SelectedItem.PersonalEmail, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label Grid.Row="8" Content="Work Email:"/>
<TextBox Grid.Row="8" Text="{Binding ElementName=myItemsControl, Path=SelectedItem.WorkEmail, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label Grid.Row="10" Content="Group:"/>
<ComboBox Grid.Row="10" Grid.Column="1" Text="{Binding ElementName=myItemsControl, Path=SelectedItem.ContactGroup, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
ComboBox应该显示&#34; CoWorker,Family,Friend&#34;在它内部,但它没有,它应该与我的Contact Class绑定。
<ListBox x:Name="myItemsControl" Grid.Column="0" Grid.Row="1" Background="LightBlue">
<ItemsControl.ItemTemplate>
<DataTemplate x:Name="myDataTemplate">
<StackPanel>
<TextBlock Height="50" x:Name="contactName">
<Run FontSize="14" Text="{Binding Path=FirstName}"/>
<Run FontSize="14" Text="{Binding Path=LastName}"/>
</TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
如何正确绑定它以便它与我的联系人一起使用?
修改 一切都有效,除了我的枚举
所有文本框都显示了它们应该是什么。只有ComboBox不起作用,因为它没有绑定到Enum可以的所有值。我需要创建一个IEnumerable,可能是一个ObservableCollection,并将该组的所有值添加到它,然后绑定到它。这是有效的,但是我不知道如何绑定我的contactList(包含所有联系人的observablecollection)来保存Group集合。有什么想法吗?
谢谢!
答案 0 :(得分:1)
我通过执行以下操作修复了它:
<ComboBox ItemsSource="{Binding ElementName=myItemsControl, Path=SelectedItem.ContactGroupValues, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding ElementName=myItemsControl, Path=SelectedItem.ContactGroup, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Row="10" Grid.Column="1"/>
然后在Contact类中:
private Group _Group;
public Group ContactGroup
{
get
{
return _Group;
}
set
{
_Group = value;
}
}
public IEnumerable<Group> ContactGroupValues
{
get
{
return Enum.GetValues(typeof(Group)).Cast<Group>();
}
}