設置:我有一個0,...,N標籤一個TabControl,每個選項卡被綁定到一個類:在它的設置WPF TabControl標題和內容沒有更新?
class MyTabItem
{
string Text {get; set;}
int ID {get; set;}
ISet<MyTabContent> Contents {get; set;}
}
Class MyTabContent
{
int ID {get; set;}
string Subtext {get; set;}
}
每個TabItem的類有許多tabcontent類。 (整個事情通過NHibernate獲取)。
我已經嘗試了很多東西來將MyTabItem的內容綁定到每個tabcontrol項目的標題,並將MyTabContent的內容綁定到每個tabcontrol項目的內容中的datagrid。
我可以顯示選項卡中的所有內容,但每當更改綁定類中的屬性時,UI都不會更新。我試圖調用InvalidateVisual,試圖調度一個渲染事件,試圖在綁定上的UpdateTarget和UpdateSource(最後2個拋出異常)。我在我的viewmodel中實現了INotifyPropertyChanged,甚至嘗試手動使用OnPropertyChanged(「MyTabItem」)無濟於事。
我真的不明白爲什麼我的tabcontrol內容不會更新,當我改變綁定類的屬性。我已經嘗試了2種不同的綁定策略,既可以用於顯示內容,也可以在內容更改時更新。
我的XAML的設置是:
<TabControl>
<TabControl.ItemTemplate>
<DataTemplate DataType="models:MyTabItem">
<TextBlock Text="{Binding Text}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="models:MyTabItem">
<DataGrid ItemsSource="{Binding Contents}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Subtext}" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
隨着該XAML的設置,我只是簡單地添加的內容與tabcontrol.Items.Add(新MyTabItem)中的tabcontrol。
然後我嘗試了另一個XAML設置,我將tabcontrol.Itemsource綁定到代碼隱藏中的ObservableCollection。同樣,標籤內容沒有更新,如果綁定屬性改變:(
我也試過在視圖模型製作CURRENTITEM屬性,使用,作爲一個Window.Resource,然後綁定的自定義的Tabcontrol內容
{Binding Source={StaticResource CurrentItem}, Path=Text}
每當我改變了我的標籤將更新的視圖模型的CURRENTITEM,但它也沒有更新的變化。
我非常的想法:(
那是你的ViewModels的實際代碼? WPF不支持綁定到'Fields',只有'properties'。 – 2013-03-27 17:58:47
它們是我viewmodel中的屬性,我忘記了將setter和getters插入到我的僞代碼中。在問題中更新它。 – 2013-03-27 18:08:52