我是新來的WPF我有一個問題。 我的組織模塊:WPF組合框綁定到ObservableCollection
class Organization : ObservableObject
{
public string OrganizationName { get; set; }
}
我有本組織的視圖模型:
class OrganizationViewModel : ObservableObject
{
int _count = 0;
public OrganizationViewModel()
{
Organization = new Organization {OrganizationName = "New Organization"};
}
public Organization Organization { get; set; }
public string OrganizationName
{
get { return Organization.OrganizationName; }
set
{
if(Organization.OrganizationName != value)
{
Organization.OrganizationName = value;
RaisePropertyChanged("OrganizationName");
}
}
}
而且我所有的組織視圖模型:
class AllOrganizationsViewModel
{
private ObservableCollection<OrganizationViewModel> m_organizations = new ObservableCollection<OrganizationViewModel>();
public ObservableCollection<OrganizationViewModel> Organizations
{
get { return m_organizations; }
set { m_organizations = value; }
}
public AllOrganizationsViewModel()
{
for(int i = 0; i < 3; ++i)
{
m_organizations.Add(new OrganizationViewModel());
}
}
void AddOrganizationNameExecute()
{
m_organizations.Add(new OrganizationViewModel());
}
bool CanAddOrganizationNameExecute()
{
return true;
}
public ICommand AddOrganization{get{return new RelayCommand(AddOrganizationNameExecute, CanAddOrganizationNameExecute);}}
}
這是MainWindow.xaml:
<Window x:Class="DataIntegrityChecker.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DataIntegrityChecker.ViewModels" Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:AllOrganizationsViewModel />
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="285*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="156" />
<ColumnDefinition Width="347*" />
</Grid.ColumnDefinitions>
<Label Content="Organization: " Margin="0,0,44,0" />
<Button Grid.Row="1" Name="UpdateOrganizations" Content="Update Organization Name" Command="{Binding AddOrganization}" Margin="0,0,0,262" HorizontalAlignment="Left" Width="156" />
<ComboBox Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Left" Name="comboBox1" VerticalAlignment="Top" Width="155" ItemsSource="{Binding Organizations}" />
</Grid>
</Window>
現在,我在ComboBox項目中得到的是OrganizationViewModel類的名稱,但我需要的是OrganizationName字符串。在我看來,我有一些綁定到組織名稱丟失,但我不知道在哪裏添加,如果(如果這是問題)。我假設我可以用我需要的組織名稱來創建一個字符串集合。但是將來我會在組織類中需要更多的屬性,這是我需要它工作的方式。
我會感謝所有幫助
太棒了!感謝它的工作,我想我實際上嘗試過,所以我可能錯了。 – MentalBrake 2013-04-24 17:08:35
這幾乎不可能調試。當列表中什麼也沒有顯示出來的時候,人們應該怎麼知道這樣的屬性是不存在的?無論如何,它並不適合我。我有我的DataContext綁定到ObservableCollection的ItemSource。 'ItemsSource =「{Binding Projects,Mode = OneWay}」',其中'Projects'是我的數據上下文對象實例的ObservableCollection的屬性名稱。 – Triynko 2014-02-11 23:03:14
確保您使用的是正確的'DisplayMemberPath',它應該是具有公共訪問者的屬性。另外,如果你有綁定錯誤,你可以在調試過程中使用'輸出窗口'在VS中看到它們。 – 2014-02-12 02:37:43