我有一個WPF應用程序,有很多控件的對話框。我有一個沒有從C#綁定到XAML的下拉列表。另一種方式工作正常。雙向綁定不能在WPF中工作
這裏是C#:
public class AdditionalCostView : ViewBase, IEquatable<AdditionalCostView>
{
// ..
public OfficeReferenceDataView Category
{
get { return _category; }
set
{
this._category = value;
this.OnPropertyChanged("Category");
}
}
// ..
}
,這裏是相應的XAML:
<ComboBox Grid.Row="0" Grid.Column="1" Validation.Error="Validation_Error"
DisplayMemberPath="Value" SelectedValuePath="ID"
ItemsSource="{Binding AllCategories}">
<ComboBox.SelectedItem>
<Binding Path="Category" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.NotifyOnValidationError>
<sys:Boolean>true</sys:Boolean>
</Binding.NotifyOnValidationError>
<Binding.NotifyOnSourceUpdated>
<sys:Boolean>true</sys:Boolean>
</Binding.NotifyOnSourceUpdated>
<Binding.NotifyOnTargetUpdated>
<sys:Boolean>true</sys:Boolean>
</Binding.NotifyOnTargetUpdated>
<Binding.ValidationRules>
<validators:MandatoryValueValidationRule IsRequired="True" Message="Please select a category."></validators:MandatoryValueValidationRule>
</Binding.ValidationRules>
</Binding>
</ComboBox.SelectedItem>
</ComboBox>
結合工作正常,但結合的SelectedItem的AllCategories是沒有的。 ViewBase實現INotifyPropertyChanged。
當我在C#中的視圖中更改類別的值時,下拉列表中沒有任何反應。
我哪裏錯了?
UPDATE
按要求評論,這裏是我把我的值的代碼:
private void ctlBooking_PricesAndFees_AdditionalCostEditing(object sender, RoutedEventArgs e)
{
try
{
AdditionalCostEventArgs args = e as AdditionalCostEventArgs;
AdditionalCostView costToEdit = args.AdditionalCost;
AdditionalCostView tempCost = args.AdditionalCost.Clone() as AdditionalCostView;
// ..
}
// ..
}
我知道你在想什麼,因爲我認爲同樣的事情。 Clone()不是複製值或引發事件,但它是。我在克隆之後慢慢寫了它來顯式設置這些值,但仍然無效。
中號
您可能在「SelectedValuePath」和「SelectedItem」之間存在衝突。你有沒有嘗試刪除「SelectedValuePath」? – BradleyDotNET 2015-01-15 18:35:29
另一方面,你是否真的*變成列表中的一個項目?或者這些屬性匹配? – BradleyDotNET 2015-01-15 18:36:08
您是否在輸出窗口中看到任何綁定錯誤?你在'AllCategories'列表中設置了Category Category表單對象嗎? – 2015-01-15 18:38:06