У меня есть пользовательский элемент управления:
public partial class DialogControl : UserControl
{
public BaseDialogInfo DialogInfo
{
get { return (BaseDialogInfo)GetValue(BaseDialogProperty); }
set { SetValue(BaseDialogProperty, value); }
}
public static readonly DependencyProperty BaseDialogProperty=
DependencyProperty.Register("DialogInfo", typeof(BaseDialogInfo), typeof(DialogControl), new UIPropertyMetadata(new BaseDialogInfo("", "", 0), new PropertyChangedCallback(OnDialogInfoPropertyChanged)));
private static void OnDialogInfoPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MessageBox.Show("");
// Perform callback action.
}
public DialogControl()
{
InitializeComponent();
}
}
И у меня есть главное окно:
C #:
public class DialogInfoContainer {
public BaseDialogInfo info { get; set; }
}
public partial class MainWindow : Window
{
public ObservableCollection<DialogInfoContainer> pathes;
public MainWindow()
{
InitializeComponent();
pathes = new ObservableCollection<DialogInfoContainer>() { new DialogInfoContainer() { info = new BaseDialogInfo("", "", 0) } };
lb.ItemsSource = pathes;
}
}
XAML:
<Grid>
<ListBox x:Name="lb" Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<local:DialogControl DialogInfo="{Binding Path=info}"></local:DialogControl>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Когда я запускаю программу, я получаю System.Windows.Markup.XamlParseException - обработка диспетчера была приостановлена с внутренним InvalidOperationException - то же самое описание.Но когда я удаляю OnPropertyChangesListener из DependencyProperty, у меня нет ошибки.Что я сделал не так?У меня есть низкоуровневые зацепки в моей программе, но я не думаю, что они вызвали ошибку.
Кроме того, я хочу знать, как я могу связать элемент в коллекции, потому что теперь я связываю объект пользовательского класса со свойством целевого объекта.