2012-05-05 32 views
0

我在將文本框綁定到字符串(對於StringBuilder同樣的問題)時出現問題。窗口手機例外在TextBox項的雙向數據綁定列表框

這裏是XAML:

<ListBox x:Name="MyList" ItemsSource="{Binding ListOfBullets, Mode=TwoWay, Converter=StaticResourcedebugConverter}}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
          <local:TaskStepControl Text="{Binding Mode=TwoWay}" AddHnadler="{Binding DelegateForHandlingAddTaskStep, ElementName=uc}"></local:TaskStepControl>       
        </DataTemplate> 
       </ListBox.ItemTemplate> 

和ListBox中的項目是:

public ObservableCollection<StringBuilder> ListOfBullets{get{....} set{....}} 

我也試過:

public ObservableCollection<string> ListOfBullets{get{....} set{....}} 

如果我運行應用程序我得到一個unhalted除外離子「參數不正確。 「 如果我刪除模式=雙向那麼它的工作原理,但如預期編輯文本框不改變ListOfBullets文本綁定的對象;

我在做什麼錯

回答

1

MSDN says,你不能有一個兩路與空屬性路徑結合。

我想綁定引擎只能對特定的屬性進行雙向綁定,而不是對象本身。

關於爲什麼它是不是我的想法允許:

爲了簡單起見,您可以認爲TwoWay綁定的'寫入'部分只是爲數據源對象設置提供的值。因此,此標記Text={Binding Name, Mode=TwoWay}與文本更新上的C#代碼:dataSource.Name = textBox.Text類似(當然,整個綁定工作流程要複雜得多,並在幕後執行其他操作,但現在無關緊要)。

您的示例嘗試執行類似listItem = textBox.Text的操作,該操作不會更新您的ListOfBullets的實際項目。請記住,我極大地簡化了綁定的工作方式,只是爲了讓您瞭解發生的事情。

你可以做的:

創建包裝型號類將包含字符串值,並將綁定到

public ObservableCollection<Model> ListOfBullets {get; set;}

<local:TaskStepControl Text={Binding Value, Mode=TwoWay} />

+0

謝謝!如果我能,我會給你+1000不+1 +1 –

+0

不客氣,我很高興它幫助。 –