1
我有一個用戶控件內以下稱爲UserInputOutput
:如何設置WPF組合框ItemsSource綁定不更新?
<ComboBox Grid.Column="1" Background="White" Visibility="{Binding InputEnumVisibility}"
FontSize="{Binding FontSizeValue}" Width="Auto" Padding="10,0,5,0"
ItemsSource="{Binding EnumItems}"
SelectedIndex="{Binding EnumSelectedIndex}"/>
我這裏有幾個綁定它除了所有的ItemsSource工作的偉大。這是我的依賴屬性和公共變量。
public ObservableCollection<String> EnumItems
{
get { return (ObservableCollection<String>)GetValue(EnumItemsProperty); }
set { SetValue(EnumItemsProperty, value); }
}
public static readonly DependencyProperty EnumItemsProperty =
DependencyProperty.Register("EnumItems", typeof(ObservableCollection<string>),typeof(UserInputOutput)
除ComboBox的ItemSource外,所有綁定都在XAML中設置。這必須在運行時設置。在我的代碼中,我使用以下代碼:
ObservableCollection<string> enumItems = new ObservableCollection<string>();
UserInputOutput.getEnumItems(enumItems, enumSelectedIndex, ui.ID, ui.SubmodeID);
instanceOfUserInputOutput.EnumItems = enumItems;
我從文件加載XAML後運行此代碼。 instaceOfUserInputOutput.EnumItems
包含正確的項目,我將它設置爲enumItems後,但它不顯示在我的程序組合框中。
不知道我在哪裏錯了。有什麼想法嗎?
謝謝!
我不得不使用依賴性屬性,因爲我的UserControl中的元素不能有Name字段。如果我不能使用名稱字段,那麼我不能訪問沒有使用其他方法的ItemsSource。您在代碼中看到的其他依賴屬性完美無缺。 –
另外,我目前沒有實現你提到的接口。我只是繼承了UserControl。 –
@ B-Rad,如果你想通過綁定填充一些控件,你必須實現INotifyPropertyChanged接口,否則更新將不起作用。其他綁定可能會在實例化時設置,並且在對象處於活動狀態時不會更改。 –