要開始的,可以說你將要綁定組合框類是
public class UnitSource :INotifyPropertyChanged
{
public IEnumerable Units
{
get { return new[] { "Test Unit", "Alternate Unit" }; }
}
string _selectedComboItem1;
public string SelectedComboItem1
{
get
{
return _selectedComboItem1;
}
set
{
if (_selectedComboItem1 == value)
return;
_selectedComboItem1 = value;
OnPropertyChanged();
}
}
string _selectedComboItem2;
public string SelectedComboItem2
{
get
{
return _selectedComboItem2;
}
set
{
if (_selectedComboItem2 == value)
return;
_selectedComboItem2 = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
然後在您的視圖模型,你將有UnitSource
的像一個ObservableCollection下面
public ObservableCollection<UnitSource> MuchoUnitSources
{
get; set;
}
爲了得到所選的ListBoxItem在你的ViewModel中有這個
private UnitSource _selectedUnitSource;
public UnitSource SelectedUnitSource
{
get
{
return _selectedUnitSource;
}
set
{
if (_selectedUnitSource == value)
return;
_selectedUnitSource = value;
OnPropertyChanged();
}
}
讓我們假設它被初始化像這樣
MuchoUnitSources = new ObservableCollection<UnitSource>(new []{ new UnitSource(),new UnitSource() });
的在你看來你的列表框應該如下
<ListBox Name ="TestList1" ItemsSource="{Binding MuchoUnitSources}" SelectedItem="{Binding SelectedUnitSource}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<ComboBox SelectedItem="{Binding SelectedComboItem1}" ItemsSource="{Binding Units}" />
<ComboBox SelectedItem="{Binding SelectedComboItem2}" ItemsSource="{Binding Units}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
現在,每當你從任何他們將更新綁定到objectbeing組合框的選擇項目。
來源
2014-02-27 22:07:43
TYY
是什麼XAML中是什麼樣子?你的模型是什麼樣的。記住你的ViewModel應該是你View的模型。因此,我認爲你的觀點爲對象A. 列表現在對象a包含一個單位名單(包括下拉列表共享相同的列表)一個UnitSelected和AlertnateUnitSelected財產。每個下拉列表綁定到它們各自選定的屬性。 – Rhyous
在上面的評論中你提到了'UnitSelected'和'AlternateUnitSelected'屬性應該在viewmodel中定義。我同意這一點。但是上面列表中的項目將被用戶添加或刪除,所以我不知道列表中的項目數量。那麼,如何決定我必須爲UnitSelected定義多少個屬性,如第一個ListItem的UnitSelected1,第二個ListItem的UnitSelected2等....? – Vishal
你剛剛用「List」回答了你自己的問題。你需要有一個名單 SelectedUnits。然後,爲您的父列表框的xaml模板將包括它自己的子列表框。 –
Rhyous