2011-03-04 175 views
0

我有添加項目到DataGrid一個非常簡單的形式。這是問題孩子,作品第一次有人點擊按鈕添加的項目組合框,但隨後的點擊不會爲選擇的值返回任何值:Silverlight的組合框不重新綁定

<ComboBox SelectedValuePath="Content" SelectedValue="{Binding Mode=TwoWay, NotifyOnValidationError=True, Path=NewResource.ResourceType, ValidatesOnExceptions=True}" Grid.Row="2" Grid.Column="1" Margin="0,10,0,0"> 
    <ComboBoxItem Content="AV" /> 
    <ComboBoxItem Content="Room Setup" /></ComboBox> 

這裏是視圖代碼 - 模型,添加資源:

if (NewResource.Name != string.Empty) 
{ 
    ProposalResource _pr = new ProposalResource() 
    { 
     CreatedBy = App.UserID, 
     CreatedOn = DateTime.Now, 
     ModifiedBy = App.UserID, 
     ModifiedOn = DateTime.Now, 
     Name = NewResource.Name, 
     ProposalID = CurrentProposal.ProposalID, 
     Quantity = NewResource.Quantity, 
     ResourceType = NewResource.ResourceType 
    }; 

    CurrentProposal.ProposalResources.Add(_pr); 
    ctx.SubmitChanges(); 

    NewResource.Name = ""; 
    NewResource.Quantity = null; 
    NewResource.ResourceType = null; 
    RaisePropertyChange("NewResource"); 
} 

我的問題是,這適用於第一次插入。資源類型從組合框中拾取,一切正常。但隨後的點擊不會返回任何選定的值。是否有任何理由爲什麼後續請求不會選擇雙向綁定?

回答

1

這與SL內置的組合框,如果底層的ItemsSource被修改,綁定的SelectedValue一個已知的bug被打破。 (這也打破了,如果你設置的SelectedValue爲空後,這是一個非空值)。

爲此需要手工制定的解決方法,我的首選方法是使用ItemsSource和SelectedValue屬性編寫交互行爲(請參閱here如何編寫自己的),我綁定(或修改)這些屬性,而我修改組合框的項目和SelectedItem屬性代碼,並改變對組合框的SelectionChanged事件行爲的選定值而不是綁定它。