我在Silverlight中有一個綁定問題,我不能讓它工作...我有一個控制,其中有一個模型。Silverlight綁定問題嵌套控件
控制後面的代碼看起來像這樣
.....
public ClientListingVM()//constructor
{
ClientListingViewModel model = new ClientListingViewModel();//this is my model
DataContext = model;
InitializeComponent();
}
.....
型號後面的代碼看起來像這樣
....
public ObservableCollection<FilterItemDefinition> FilterItemDefinitions
{
get { return _filterItemDefinitions; }
set
{
if (_filterItemDefinitions != value)
{
_filterItemDefinitions = value;
}
OnPropertyChanged("FilterItems");
}
}
....
在控制XAML我有這個
....
<my:Filters Height="150" FilterItems="{Binding Path=FilterItemDefinitions}" Columns="{Binding ElementName=ClientGrid, Path=Columns}"/>
....
,其中過濾器是用戶控制... 直到這裏一切正常...
落後於過濾器的代碼看起來像這樣
....
public partial class Filters : UserControl
{
public Filters()
{
InitializeComponent();
}
private DependencyProperty FilterItemsProperty = DependencyProperty.Register("FilterItems", typeof(ObservableCollection<FilterItemDefinition>), typeof(Filters), new PropertyMetadata(null, new PropertyChangedCallback(OnChangef)));
public ObservableCollection<FilterItemDefinition> FilterItems
{
get
{
return (ObservableCollection<FilterItemDefinition>)GetValue(FilterItemsProperty);
}
set
{
SetValue(FilterItemsProperty, value);
}
}
private DependencyProperty ColumnsProperty = DependencyProperty.Register("Columns", typeof(ObservableCollection<DataGridColumn>), typeof(Filters), new PropertyMetadata(null, new PropertyChangedCallback(OnChangec)));
public ObservableCollection<DataGridColumn> Columns
{
get
{
return (ObservableCollection<DataGridColumn>)GetValue(ColumnsProperty);
}
set
{
SetValue(ColumnsProperty, value);
}
}
public static void OnChangef(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
public static void OnChangec(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
}
....
和XAML看起來像這樣
....
<ListBox x:Name="myListBox" ItemsSource="{Binding Path=FilterItems, Mode=TwoWay}" >
<ListBox.ItemTemplate>
<DataTemplate>
<my:FilterItem Columns="{Binding Source={StaticResource DataContextProxy},Path=DataSource.Columns}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
....
所以這裏的問題是:
ListBox中的ItemSource勢必FilterItems。 ..但過濾器DataContext是ClientListingViewModel ...並且該模型沒有FilterItems屬性。
如果過濾器構造我設置FiltersViewModel或者我說的DataContext =本的DataContext將擁有財產FilterItems和結合willwork確定..但是從ClientListingViewModel財產FilterItemDefinitions不會得到我的控制過濾器...
我想DataContext FiltersControl是他的DataContext或背後的代碼..但在同一時間綁定他的屬性與父控制模型工作.. 我相信這是可能的,我是這樣做的方式不對..可以有人請幫助我... 10x