我有兩個ComboBox
我的代碼之後:數據綁定組合框的的InitializeComponent()
<ComboBox Name="comboBoxSelectCamera" ItemsSource="{Binding Path=ListCameras}" SelectionChanged="comboBoxSelectCamera_SelectionChanged" />
<ComboBox Name="comboBoxCities" ItemsSource="{Binding Path=ListCities}" />
在我Window
我有這樣的代碼,以便ComboBox
明白的地方的Path
來自:
<Window ....
DataContext="{Binding RelativeSource={RelativeSource Self}}"
.... >
這兩個組合綁定到我在我的MainWindow
上創建的兩個利斯特:
public MainWindow()
{
InitializeCitiesCombo();
InitializeComponent();
// Initialize the control that checks for cameras
InitializeCameraControl();
FillCameraProperties();
DataContext = this;
}
第一個ComboBox
列表創建的之前InitializeComponent
,所以當它的組合創建時,它會填充特定的內容。
第二ComboBox
列表中創建的InitializeComponent
後,因爲它取決於加載攝像頭的對象,並且,我不知道如果是這樣的原因,但如果InitializeComponent
後創建名單,它不填寫ComboBox
。
我知道有其他的方法來填補我的計算機上的連接攝像機列表,但我爲使用在InitializeComponent
中創建並在InitializeCameraControl()
發起的控制。
任何想法如何填補這ComboBox
後InitializeComponent
?
編輯:聲明兩個列表:
private List<CameraInfo> ListCameras { get; set; }
private List<String> ListCities { get; set; }
某處在代碼中,ListCites
:
ListCities = new List<String> { Madrid, Barcelona, Alicante, Valencia }
某處在代碼中,我控制返回的連接的攝像機列表(它的工作原理,它有元素但它們不顯示在組合上):
ListCameras = MyUserControl.ConnectedCameras; // this returns a valid list of `CameraInfo`
我CameraInfo
類:
public class CameraInfo
{
public CameraInfo(string name, string id);
public static implicit operator string(CameraInfo cameraInfo);
public string Id { get; }
public string Name { get; }
public override string ToString();
}
請注意,當我們討論這個,我試圖改變攝像機的DisplayMemberPath
組合。
綁定錯誤:
System.Windows.Data Error: 40 : BindingExpression path error: 'Text' property not found on 'object' ''MainWindow' (Name='')'. BindingExpression:Path=Text; DataItem='MainWindow' (Name=''); target element is 'TextBox' (Name=''); target property is 'Template' (type 'ControlTemplate')
你在攝像機列表中使用了什麼類?它只是列表或ObservableCollection ? –
Blablablaster
2013-04-25 08:25:50
向我們展示這兩個列表的聲明。他們不是'ObservableCollections',對吧? – DHN 2013-04-25 08:26:02
他們應該是什麼樣的名單?請注意,在'InitializeComponent'之前創建的那個是正確的,但另一個不是。 – Sonhja 2013-04-25 08:29:44