我的 XAML 中有四個組合框。它看起來像這樣:
<ComboBox Grid.Row="2" ItemsSource="{Binding VehiclesAvailable}" DisplayMemberPath="FleetNumber"/>
<ComboBox Grid.Row="3" ItemsSource="{Binding Employees_VehicleEligible}" DisplayMemberPath="FullName"/>
<ComboBox Grid.Row="4" ItemsSource="{Binding Jobsites}" DisplayMemberPath="Name"/>
<ComboBox Grid.Row="5" ItemsSource="{Binding Conditions}" SelectedItem="{Binding SelectedCondition}" />
前三個 CB 系結到 ObservableCollection 屬性,這些作業正常。最后一個系結到一個串列,它不顯示任何內容。
在 VM 中,我宣告該屬性并在 LoadInitialData 命令中設定其值。
//PROPERTIES
public ObservableCollection<VehicleModel> VehiclesAvailable { get; set; }
public ObservableCollection<EmployeeModel> Employees_VehicleEligible { get; set; }
public ObservableCollection<JobsiteModel> Jobsites { get; set; }
public ConditionsModel Conditions { get; set; }
public GenericCondition SelectedConditionOut { get; set; }
public string SelectedCondition { get; set; }
//COMMANDs
public RelayCommand<object> LoadIntialDataCommand { get; set; }
//METHODS
public async void LoadInitialData(object e)
{
var vehiclesAvailable = await GetData.VehiclesAvailableQueryAsync();
foreach (VehicleModel _vehicle in vehiclesAvailable)
VehiclesAvailable.Add(_vehicle);
var employees_VehiclesEligible = await GetData.Employees_VehiclesEligibleQueryAsync();
foreach (EmployeeModel _employee in employees_VehiclesEligible)
Employees_VehicleEligible.Add(_employee);
Conditions = new ConditionsModel();
}
就其價值而言,這就是我定義 ConditionModel 的地方:
class ConditionsModel
{
private List<string> _conditions;
public List<string> Conditions
{
get { return new List<string>() { "New", "Excellent", "Good", "Fair", "Poor", "Unacceptable" }; }
set { _conditions = value; }
}
當我單步執行代碼時,在 LoadInitialData 方法的右括號處放置一個斷點時,Condition 似乎填充了所有字串。當我轉到 XAML 時,果然,當我將滑鼠懸停在 ItemsSource 屬性上時,所有字串都會出現。但是當我運行它時,組合框是空的。除錯這個問題的下一步可能是什么?
uj5u.com熱心網友回復:
看起來您系結到 aConditionsModel而不是ConditionsModel.Conditions屬性。除此之外,當它更新時ObservableCollection會觸發一個NotifyPropertyChange事件,而標準List則不會。
在創建并顯示視圖后,將呼叫RelayCommand您的LoadInitialData(...)函式觸發。如果您Conditions在 ViewModel 建構式中創建并填充了您的,那么您可能會看到一些值。
在這種情況下,您最好擁有一個ConditionsViewModel Conditions而不是一個ConditionsModel Conditions屬性,其中ConditionsViewModel使用 anObservableCollection<string> Conditions然后系結到ConditionsViewModel.Conditions
uj5u.com熱心網友回復:
Conditions您當前系結到的屬性不會回傳IEnumerable該ItemsSource屬性所需的。
您應該系結到 的Conditionslist 屬性ConditionsModel:
<ComboBox Grid.Row="5" ItemsSource="{Binding Conditions.Conditions}"
SelectedItem="{Binding SelectedCondition}" />
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/315343.html
上一篇:橢圓滑塊拇指上的文本塊-避免在文本更改C#WPF時調整橢圓后面的網格大小
下一篇:無法更改按鈕高度WPF
