2
我見過很多類似的問題,關於如何使用複選框來獲取數據綁定,但我看過的示例中的全部都在C#中我似乎無法將其轉換爲IronPython。我在正是如此一個窗口中定義一個複選框:IronPython&WPF:將複選框的IsChecked屬性綁定到類成員變量
<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加載到UI中作爲UI控件的參考。請參閱here)
那麼,我該如何做到這一點?之後通過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)
它不工作,但現在看來似乎使至少一些感覺。我在正確的軌道上嗎?
好吧,這花了我整整一週的時間和許多試圖消化/理解/實現/測試,但我終於有類似的工作,雖然我使用'__setattr__'方法你在你的博客中提到現在。感謝您發佈它!一旦我解決了我的錯誤,我會發布我的一些代碼來展示我是如何做到的。主要涉及繼承'INotifyPropertyChanged'接口,並在'__setattr__'中調用'self._OnPropertyChanged',每當我需要告訴gui綁定從源更新綁定目標時。 – Aphex 2010-10-08 18:38:01
那麼,'__setter__'中的內容正是'@ notify_property'裝飾器所做的。如果您發佈代碼,我可以嘗試修復它。 – 2010-10-09 08:13:57