Мое решение реализовано в MVVM. Представление представляет собой окно, в котором находится пользовательский контроль. Я создал свойство зависимостей для этого UserControl, как показано ниже:Связывание свойств зависимостей в UserControl
public static DependencyProperty ListProperty = DependencyProperty.Register(
"ItemsList", typeof(List<RequiredClass>), typeof(UsercontrolTest));
public List<RequiredClass> ItemsList
{
get { return (List<RequiredClass>)GetValue(ListProperty); }
set
{
SetValue(ListProperty, value);
}
}
Это свойство привязан к моей ViewModel собственности (LISTOFITEMS) в XAML:
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Test="clr-namespace:TestProject"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Test:UserControlTest Grid.Row="0" ItemsList="{Binding Path=ListOfItems}" />
<Button Grid.Row="1" Content="AddItems" Click="Button_Click" />
</Grid>
</Window>
Также я инициализирован DataContext окна в codebehind к viewmodel. Проблема в том, что привязка никогда не происходит, и свойство set никогда не вызывается для свойства зависимостей. Я что-то упустил?
Взрыв на этом именно то, что происходило. Поскольку я не могу поставить код в сеттер, любая идея, как я могу определить, изменился ли мой список и выполнить какой-то код? –
@AabidAli: вы можете использовать ['ObservableCollection'] (http://msdn.microsoft.com/en-us/library/ms668604.aspx), который запускает событие при изменении, не уверен, что именно вы пытаетесь сделать, хотя ... –
@ HB Я имел в виду изменение свойства зависимости. Np я получил его, вам просто нужно добавить метаданные свойств при инициализации dp для обработки propertychanged. Спасибо за вашу помощь –