2009-08-07 3 views
1

Я не использовал WPF, поэтому решение этого, вероятно, довольно легко.WPF Binding Help

В идеале, который я разрабатываю, у него будет несколько элементов управления (текстового редактора), каждый из которых размещается на вкладке, подобно VS для каждого исходного файла. Когда пользователь нажимает на новый, «хост» создает новый EditorWindow (usercontrol), создает новую вкладку и сообщает вкладке отображать созданный EditorWindow, а затем обновляет свойство currentWindow (типа EditorWindow) с тем, которое в настоящее время активен. Внутри EditorWindow находится текстовый редактор, имя которого - textEditor (также свойство). То, что я пытаюсь сделать, это принять этот код с помощью быстрого запуска источника контроля текстового редактора я использую

    <StackPanel> 
         <CheckBox Checked="EditiorOptionsChecked" IsChecked="{Binding ElementName=Control, Path=currentWindow.textEditor.IsIndicatorMarginVisible}" Content="Indicator margin visible" /> 
         <CheckBox Checked="EditiorOptionsChecked" IsChecked="{Binding ElementName=Control, Path=currentWindow.textEditor.IsLineNumberMarginVisible}" Content="Line number margin visible" /> 
         <CheckBox Checked="EditiorOptionsChecked" IsChecked="{Binding ElementName=Control, Path=currentWindow.textEditor.IsRulerMarginVisible}" Content="Ruler margin visible (useful for fixed-width fonts only)" /> 
         <CheckBox Checked="EditiorOptionsChecked" IsChecked="{Binding ElementName=Control, Path=currentWindow.textEditor.IsSelectionMarginVisible}" Content="Selection margin visible" /> 
        </StackPanel> 

положить, что в принимающем управлении XAML, и связать флажки редактора синтаксиса. Я пробовал пару разных вещей безрезультатно. Элемент управления - это имя окна, в котором размещены все вкладки, а путь, очевидно, должен быть свойством, связанным с флажками. Я уверен, что проблема в том, что в начальное время выполнения currentWindow не инициализируется, поэтому мои привязки никогда не обновляются, но я не понимаю, как исправить эту проблему. Благодаря!

ответ

1

Поскольку вы новичок в WPF, вы можете не знать, что свойства должны выполнять какие-то уведомления об изменениях, чтобы привязки работали. Например, если какое-либо из свойств в пути «currentWindow.textEditor.IsIndicatorMarginVisible» изменилось, вам нужно сообщить движку привязки, что он изменился. Если вы реализуете эти свойства как DependencyPropertys, отслеживание изменений происходит бесплатно. В противном случае вы должны реализовать INotifyPropertyChanged.

0

Я обнаружил, что утилита Snoop является самым простым способом для быстрой отладки связывания, вы должны попробовать ее использовать и посмотреть, не сообщает ли она что-либо полезное для связанных свойств.