확인란을 선택하면 문자열 값이 변경됩니다. 확인란을 선택하거나 선택 취소하면 문자열 값이 변경됩니다. 나는 (내 체크 박스로 CheckAll과)이 있습니다IronPython의 문자열에 체크 박스를 바인딩합니다.
class MyWindow(Window):
def __init__(self):
wpf.LoadComponent(self, 'BioApp1.xaml')
openDialog = SequenceFileOperations()
self.Sequences = openDialog.Open()
object = MyObjects(self.Sequences)
self.CheckAll.DataContext = object
self.IDLabel.DataContext = object
class MyObjects(object):
def __init__(self, Sequences):
self.CurrentSeq = Sequences[0]
self.ID = self.CurrentSeq.ID
및
<Label Height="28" HorizontalAlignment="Left" Margin="152,221,0,0" VerticalAlignment="Top" Width="98" Name="IDLabel" Content="{Binding Path=ID}"/>
내가 체크 박스에 체크 표시를하지 않은 경우에는 레이블이 시퀀스 ID를 표시해야합니다,하지만은, 체크되는 경우 단순히 "All"을 표시해야합니다. 이를 위해 CurrentSeq의 ID 속성을 "All"로 변경해야합니다. 데이터 바인딩으로 어떻게 할 수 있습니까? 내가 할 수있는 다른 방법이 있습니까?
편집 : 나는 정말 바보 같지만 작동시키지 못합니다. getter/setter 사용에 대한 제안을 따르려고했지만 충분히 모를 것 같습니다. 좀 더 복잡한 작업을하기 전에 확인란을 선택하고 선택을 취소 할 때 버튼을 비활성화하면 버튼을 비활성화하기 만하면됩니다.
class MyWindow(Window):
def __init__(self):
wpf.LoadComponent(self, 'App1.xaml')
object = BindingClass(self.Check, self.PreviousBtn)
self.PreviousBtn.DataContext = object
class BindingClass(object):
def __init__(self, Check, PreviousBtn):
self.Check = Check
self.PreviousBtn = PreviousBtn
def GetEnabledConverter(self):
if self.CheckAll.IsChecked:
return self.PreviousBtn.IsEnabled
def SetEnabledConverter(self):
if self.CheckAll.IsChecked:
self.PreviousBtn.IsEnabled = False
else:
self.PreviousBtn.IsEnabled = True
EnabledConverter = property(GetEnabledConverter, SetEnabledConverter)
그리고 :
<Button Content="Previous" IsEnabled="{Binding Path=EnabledConverter}" />
불행하게도 오류하지만 중 아무 효과가 없습니다를이 내가 쓴 것입니다. 코드는 아무 것도하지 않습니다. 네가 나를 도울 수 있다면 정말 고마워.
EDIT2 :
class MyWindow(Window):
def __init__(self):
wpf.LoadComponent(self, 'Test.xaml')
c = Converters(self.check1, self.Button)
self.Button.DataContext = c
class Converters(NotifyPropertyChangedBase):
def __init__(self, check, button):
super(Converters, self).__init__()
self.Check = check
self.Button = button
@notify_property
def ButtonEnabled(self):
return self.Button.IsEnabled
@ButtonEnabled.setter
def ButtonEnabled(self):
if self.Check.IsChecked:
self.Button.IsEnabled = False
else:
self.Button.IsEnabled = True
여전히 같은 결과 : 다음 notify_property를 사용하여, 나는이 시도하지 영향을. 나는 그 문제가 어디 있는지 이해할 수 없다.
맞아,하지만 파이썬에서 코드를 원해. 파이썬에서 IValueConvertor와 비슷한 것이 있습니까? – user828647
죄송합니다. 여전히이 문제를 해결할 수 없습니다 (위 편집 참조). IValueConverter를 사용하기로 결정했다면 xaml을 변경해야합니까? – user828647
일반 Python 속성을 사용할 수 없습니다. .NET CLR에서는 표시되지 않습니다. 내 [notify_property] 사용 (http://gui-at.blogspot.com/2009/11/inotifypropertychanged-and-databinding.html) –