我已經創建了一個UserControl,它根據綁定的ObservableCollection的內容顯示轉換後的字符串值。一切工作在應用程序加載時;我的IValueConverter被調用併產生正確的字符串結果,這在我的UserControl中正確顯示。但是,如果ObservableCollection內容更改,我的控件不會更新。另外,在我創建這個控件之前,我有相同的行爲,但是綁定了一個常規的Button控件的屬性,並且這也正常工作並按預期進行了更新。DataBinding UserControl到ObservableCollection的文本屬性不會更新
任何想法,我失去了我的UserControl相同的事情?
控件屬性看起來像;
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(MyUserControl));
public string Text
{
get { return GetValue(TextProperty) as string; }
set { SetValue(TextProperty, value);
}
UserControl XAML中的相關部分(顯示轉換後的字符串值)是;
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type Controls:MyUserControl}}, Path=Text}" />
而控制是在一個單獨的窗口中創建的,就像這樣;
<CoreControls:MyUserControl
Name="myControl"
Text="{Binding Path=ObservableCollectionInstance, Converter={StaticResource MyValueConverter}, Mode=OneWay}" />
RelativeSource綁定位於UserControl內的TextBlock上;用戶控件沒有在那個點上被命名。無論如何,這並不能解決這個問題。 –
我故意綁定到一個集合,以便在集合中有單個項目時收集爲空的「Item [0] .SomeValue」,並且當多於1個項目時,文本框可以顯示'NONE'並且'MULTIPLE'。我的IValueConverter處理這種轉換,並且在窗口上設置初始DataContext時正確執行,但在ObservableCollection發生更改時無法正確執行。 –