我有簡單UserControl
其中定義的屬性ItemsSource
用戶控件自定義的ItemsSource沒有檢測到變化
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(Dictionary<string, object>), typeof(UserControl1), new FrameworkPropertyMetadata(null,
new PropertyChangedCallback(UserControl1.OnItemsSourceChanged)));
public Dictionary<string, object> ItemsSource
{
get { return (Dictionary<string, object>)GetValue(ItemsSourceProperty); }
set
{
SetValue(ItemsSourceProperty, value);
}
}
private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
UserControl1 control = (UserControl1)d;
control.DisplayInControl();
}
我想使這個屬性更新動態,但我不知道爲什麼OnItemsSourceChanged
不會每次當發射時間有些東西與ItemsSource發生。所以我很不高興。 我試過Custom ItemsSource property for a UserControl但這並不能幫助或者我寫壞newValueINotifyCollectionChanged_CollectionChanged
功能
我的控制是從這個帖子CodeProject
我的代碼: 用戶控件XAML - http://pastie.org/10606317
UserControl CodeBehind - http://pastie.org/10606322
控制用法 -
<controls:MultiSelectComboBox SelectedItems="{Binding SelectedCategories, Mode=TwoWay}" Grid.Column="0" Grid.Row="0" x:Name="CategoriesFilter" DefaultText="Category" ItemsSource="{Binding Categories }" Style="{StaticResource FiltersDropDowns}"/>
更新:我做了小步的解決方案。我有下一種風格:
<Style.Triggers>
<DataTrigger Binding="{Binding ItemsSource, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding ItemsSource.Count, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
我適用於我的控制(禁用如果沒有itemSource控件)。當我點擊更新控件源時,我看到控件變爲啓用狀態,所以ItemsSource不是空的(從開始它)。所以如果我正確理解這種行爲,現在問題就在於重繪控件內容。
在你的類的靜態構造函數中定義你的DP。 – AnjumSKhan
public static readonly DependencyProperty ItemsSourceProperty; DependencyProperty.Register(「ItemsSource」,typeof(Dictionary),typeof(UserControl1),new FrameworkPropertyMetadata(null, new PropertyChangedCallback(UserControl1.OnItemsSourceChanged)));靜態YourClassName(){ItemsSourceProperty = ; } –
AnjumSKhan
@AnjumSKhan - 我試過後,我得到了異常 - '其他信息:'ItemsSource'屬性已經被'UserControl1'註冊了。' – demo