2010-02-04 40 views
2
<ComboBox Height="23" Margin="52,64,33,0" Name="comboBox1" 
       IsSynchronizedWithCurrentItem="True" 
       IsEditable="True" 
       DisplayMemberPath="Value" 
       SelectedItem="{Binding Path=Number, Mode=TwoWay}" 
       /> 

public class Number : INotifyPropertyChanged 
    { 
     private string value; 
     public string Value 
     { 
      get 
      { 
       return value; 
      } 
     set 
     { 
      this.value = value; 
      this.PropertyChanged(this, new PropertyChangedEventArgs("Value")); 
     } 
    } 

    #region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged = delegate { }; 

    #endregion 
} 

comboBox1.ItemsSource = new Number[] { new Number() { Value = "One" }, 
                new Number() { Value = "Two" }, 
                new Number() { Value = "Three" }}; 

當我編輯組合框文本時,我的綁定數據集未修改。即,目標到源的綁定不會發生。WPF雙向DataBinding - 可編輯組合框到DataView

回答

1

添加到什麼Josh建議.... 首先,你應該考慮使用一個diff變量名稱,然後「價值」,
秒,你不應該,如果該值不改變火「的PropertyChanged」事件。

將其添加到屬性的setter ....

if (value != this.value) 
{ 

} 

第三,你的不綁定到您的數據的情況下,你的綁定到你的類類型

SelectedItem="{Binding Path=Number, Mode=TwoWay}" 

第四,你應該將您的組合框中的ItemSource設置爲ObservableCollection<Number>

最後,您應該查看Bea's great blog entry about debugging databinding.她有很多很好的例子。

好的,現在我可以訪問我的編譯器....這是你需要做的。
首先,WHERE是您綁定到的「Number」屬性?您無法將其綁定回作爲組合框源的列表。

您需要將ElementName添加到綁定,或將DataContext設置爲包含Number屬性的對象。其次,Number屬性無論在哪裏都需要是Notify或DependencyProperty。
例如,你的窗口類是這樣的.....

public partial class Window1 : Window 
    { 
     public Number Number 
     { 
     get { return (Number)GetValue(ValueProperty); } 
     set { SetValue(ValueProperty, value); } 
     } 

     public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(Number),typeof(Window1), new UIPropertyMetadata(null)); 

    } 

和你window.xaml是這樣的......

<Window x:Class="testapp.Window1" 
      x:Name="stuff" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Grid> 
     <ComboBox Height="23" Margin="52,64,33,0" Name="comboBox1" 
       IsEditable="True" 
       DisplayMemberPath="Value" 
       SelectedItem="{Binding ElementName=stuff, Path=Number, Mode=TwoWay}" 
     /> 
    </Grid> 
</Window> 
+0

我試圖綁定到SelectedItem屬性。但是當我設置組合框的Text屬性時,SelectedItem屬性變爲null。 – Subindev 2010-02-04 10:10:09

+0

IsTextSearchEnabled =「True」導致SelctedItem屬性每當我嘗試設置Text屬性時都爲null。 TextSearchEnabled =「False」顯示沒有任何問題,將2種文本綁定到selecteditem propertybinding .. :-) – Subindev 2010-02-04 14:47:08