IronPython & WPF: привязка свойства IsChecked флажка к переменной члена класса - PullRequest
2 голосов
/ 04 октября 2010

Я видел много похожих вопросов о том, как заставить привязку данных работать с флажком, но все примеров, которые я видел, находятся на C #, и я не могу сделать прыжок к преобразовать его в IronPython. У меня есть флажок, определенный в окне таким образом:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Name="Test" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
    <DockPanel>     
        <CheckBox Name="bindtest" IsChecked="{Binding Path=o1checked, Mode=OneWay}"></CheckBox>
        <Button Content="Toggle" Name="Toggle" Padding="5"></Button>
    </DockPanel>
</Window>

И я хочу, чтобы значение IsChecked автоматически обновлялось при переключении self.o1checked в следующем классе:

class MaikoCu64(object):
    def __init__(self):
        self.o1checked = False
        ui.win['Button']['Toggle'].Click += self.Toggle_OnClick

    def Toggle_OnClick(self, sender, event):
        self.o1checked = not self.o1checked

(Этот ui объект - это класс, в который загружен xaml в качестве диктонара элементов управления пользовательским интерфейсом. См. здесь )

Так как мне это сделать? После нескольких часов чтения документации по привязке MSDN (также все в C #) я попытался добавить это:

import System
myBinding = System.Windows.Data.Binding("o1checked")
myBinding.Source = self
myBinding.Mode = System.Windows.Data.BindingMode.OneWay
ui.win['CheckBox']['bindtest'].SetBinding(System.Windows.Controls.CheckBox.IsCheckedProperty, myBinding)

Это не работает, но, похоже, в этом есть хоть какой-то смысл. Я на правильном пути?

1 Ответ

3 голосов
/ 05 октября 2010

Свойство должно использовать интерфейс INotifyPropertyChanged.См. Мой блог для примера того, как реализовать его в IronPython.

Также обратите внимание, что есть ошибка Silverlight в .NET или IronPython, вызывающая ошибку, когда что-либо еще, кромеСтрока должна быть передана обратно в viewmodel.

...