WPF checkbox "IsChecked" not reflecting initial binding
3 posts
• Page 1 of 1
WPF checkbox "IsChecked" not reflecting initial binding
I am setting the initial Checkbox value to 1. When I set the DataContext to the binding, I expect the checkbox to reflect the initial binding state. Am I doing something wrong here or is this a bug?
This is a complete self contained example. Just copy and paste into a function. It was tested in 14 (comment out setting OnElementChanged in 14)/15/16 with the same result.
This is a complete self contained example. Just copy and paste into a function. It was tested in 14 (comment out setting OnElementChanged in 14)/15/16 with the same result.
test;win;binding;⎕USING;str;xml;xaml
⎕USING←'System.IO'
⎕USING,←⊂'System.Windows.Markup'
⎕USING,←⊂'System.Xml,system.xml.dll'
⎕USING,←⊂'System.Windows.Controls,WPF/PresentationFramework.dll'
xaml←'<Window '
xaml,←' xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"'
xaml,←' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" '
xaml,←' xmlns:d="http://schemas.microsoft.com/expression/blend/2008" '
xaml,←' xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"'
xaml,←' xmlns:local="clr-namespace:testlibrary" '
xaml,←' mc:Ignorable="d" '
xaml,←' Title="Window2" Height="300" Width="300"> '
xaml,←' <Grid > '
xaml,←' <StackPanel DataContext="{Binding MyValues}"> '
xaml,←' <TextBox Text="{Binding TextValue, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></TextBox> '
xaml,←' <CheckBox Content="test" IsChecked="{Binding CheckBoxValue, Mode=TwoWay}"></CheckBox> '
xaml,←' </StackPanel> '
xaml,←' </Grid> '
xaml,←'</Window>'
str←⎕NEW StringReader(⊂xaml)
xml←⎕NEW XmlTextReader str
win←XamlReader.Load xml
props←⎕NS''
props.MyValues←⎕NS''
props.MyValues.TextValue←'test'
props.MyValues.CheckBoxValue←1
⎕←'Checkbox value should be ticked.'
⎕THIS.⎕FX'ElemChanged (ob ev)' '⎕←ev.Name , '' Value: '', ⍕ob.MyValues ⍎ev.Name '
binding←2015⌶'props'
binding.onElementChanged←(⍕⎕THIS),'.ElemChanged'
win.DataContext←binding
win.Topmost←1
win.Show
-
norbertjurkiewicz84 - Posts: 62
- Joined: Mon Nov 01, 2010 7:26 pm
Re: WPF checkbox "IsChecked" not reflecting initial binding
Hello Norbert,
IsChecked requires a Boolean type, and the default binding will generate an integer from from value 1. You'll need to specify the binding types as the left arg to the ibeam. Something like:
Should do it.
/John
IsChecked requires a Boolean type, and the default binding will generate an integer from from value 1. You'll need to specify the binding types as the left arg to the ibeam. Something like:
- Code: Select all
types←2 2⍴'TextValue'String'CheckBoxValue'Boolean
types←1 2⍴'MyValues'types
Should do it.
/John
-
JohnD|Dyalog - Posts: 74
- Joined: Wed Oct 01, 2008 9:35 am
Re: WPF checkbox "IsChecked" not reflecting initial binding
JohnD|Dyalog wrote:Hello Norbert,
IsChecked requires a Boolean type, and the default binding will generate an integer from value 1. You'll need to specify the binding types as the left arg to the ibeam. Something like:
- Code: Select all
types←2 2⍴'TextValue'String'CheckBoxValue'Boolean
types←1 2⍴'MyValues'types
Should do it.
/John
I figured it was a Boolean to Integer issue and I was unaware that I can nest definitions for complex objects like your exmaple shows.
How would I specify the bindings for a collection item types where an item needs to be a Boolean?
Would something like my example below work? I would think my definition of ItemsCollection would need to specify a Collection type or an array. I may simply be overthinking this...
- Code: Select all
TEST;getItem;bindingDef;⎕USING;add;bindingDefItemCol
⎕USING←'' 'System'
getItem←{
col←⎕NS''
col.Desc←'Complex Item'
col.Items←{n←⎕NS'' ⋄ n.CBValue←?1 ⋄ n.TxtValue←⎕D ⋄ n}¨⍳10
col.Name←⎕NS''
col.Name.(First Last Middle)←⊂''
col.Address←⎕NS''
col.Address.Street←⎕NS''
col.Address.Street.(Street1 Street2)←⊂''
col.Address.(City State Zip)←⊂''
col
}
bindingDefItemCol←{
items←2 2⍴'CBValue'Boolean'TxtValue'String
items←1 2⍴'Items'items
name←3 2⍴'First'String'Last'String'Middle'String
name←1 2⍴'Name'name
add←1 2⍴'Street'(2 2⍴'Street1'String'Street2'String)
add⍪←3 2⍴'City'String'State'String'Zip'String
add←1 2⍴'Address'add
def←1 2⍴'Desc'String
def⍪←items
def⍪←name
def⍪←add
def
}''
props←⎕NS''
props.Desc←'My Object Container'
props.ItemsCollection←getItem¨⍳5
bindingDef←2 2⍴'Desc'String'ItemsCollection'(↑bindingDefItemCol'')
binding←bindingDef(2015⌶)'props'
}
- Code: Select all
bindingDef
┌───────────────┬────────────────────────────────────────────┐
│Desc │(System.String) │
├───────────────┼────────────────────────────────────────────┤
│ItemsCollection│┌───────┬──────────────────────────────────┐│
│ ││Desc │(System.String) ││
│ │├───────┼──────────────────────────────────┤│
│ ││Items │┌────────┬────────────────┐ ││
│ ││ ││CBValue │(System.Boolean)│ ││
│ ││ │├────────┼────────────────┤ ││
│ ││ ││TxtValue│(System.String) │ ││
│ ││ │└────────┴────────────────┘ ││
│ │├───────┼──────────────────────────────────┤│
│ ││Name │┌──────┬───────────────┐ ││
│ ││ ││First │(System.String)│ ││
│ ││ │├──────┼───────────────┤ ││
│ ││ ││Last │(System.String)│ ││
│ ││ │├──────┼───────────────┤ ││
│ ││ ││Middle│(System.String)│ ││
│ ││ │└──────┴───────────────┘ ││
│ │├───────┼──────────────────────────────────┤│
│ ││Address│┌──────┬─────────────────────────┐││
│ ││ ││Street│┌───────┬───────────────┐│││
│ ││ ││ ││Street1│(System.String)││││
│ ││ ││ │├───────┼───────────────┤│││
│ ││ ││ ││Street2│(System.String)││││
│ ││ ││ │└───────┴───────────────┘│││
│ ││ │├──────┼─────────────────────────┤││
│ ││ ││City │(System.String) │││
│ ││ │├──────┼─────────────────────────┤││
│ ││ ││State │(System.String) │││
│ ││ │├──────┼─────────────────────────┤││
│ ││ ││Zip │(System.String) │││
│ ││ │└──────┴─────────────────────────┘││
│ │└───────┴──────────────────────────────────┘│
└───────────────┴────────────────────────────────────────────┘
-
norbertjurkiewicz84 - Posts: 62
- Joined: Mon Nov 01, 2010 7:26 pm
3 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 1 guest
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group