Ok I am trying to use bindings for my listbox using an ObservableCollection.
However my listbox remains empty.
My ObservableCollection is a very simple
public class KeyDetailList : ObservableCollection<KeyDetail>
{
// Initial test data
public KeyDetailList()
{
this.Add(new KeyDetail("XXXXXX", "YYYYYYYYYYYYYYYYYY",
"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"));
this.Add(new KeyDetail("AAAAAA", "BBBBBBBBBBBBBBBBBB",
"CCCCCCCCCCCCCCCCCCCCCCCCCCC"));
}
}
public class KeyDetail
{
public string ClientCode { get; set; }
public string Generated { get; set; }
public string ClientDescription { get; set; }
public KeyDetail(string code, string generated, string description)
{
this.ClientCode = code;
this.Generated = generated;
this.ClientDescription = description;
}
}
In My XAML for my UserControl I give it a name of KeyFileControl
. . . Detail omitted . . .
mc:Ignorable="d"
d:DesignHeight="617" d:DesignWidth="548"
Loaded="UserControl_Loaded"
Name="keyFileControl">
I have these resources
<UserControl.Resources>
<Style x:Key="KeyTextBlockStyle" TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="MinHeight" Value="25"/>
<Setter Property="FontSize" Value="12.0"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="WhiteSmoke" />
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Margin" Value="5,10,5,0" />
</Style>
<DataTemplate x:Key="KeyListItemDetail">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MinHeight="28" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="75" />
<ColumnDefinition Width="2*" MinWidth="120"/>
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Style="{StaticResource
KeyTextBlockStyle}" Text="{Binding Path=ClientCode}" />
<TextBlock Grid.Column="1" Style="{StaticResource
KeyTextBlockStyle}" Text="{Binding Path=Generated}" />
<TextBlock Grid.Column="2" Style="{StaticResource
KeyTextBlockStyle}" Text="{Binding Path=ClientDescription}" />
</Grid>
</DataTemplate>
</UserControl.Resources>
My ListBox is defined as
<ListBox Margin="6" Name="listBoxKeys" Background="Transparent"
BorderThickness="0"
Padding="10" ItemTemplate="{StaticResource
KeyListItemDetail}" ItemsSource="{Binding ElementName=KeyFileControl,
Path=KeyList}">
</ListBox>
In my code behind I have this to generate some dummy test data.
In debug the ObservableCollection is being instantiated and populated with
data.
My ListBox remains blank.
One can debug code. I am not sure if one can debug XAML as it runs.
I must be doing something really dumb but am not sure what.
I am using these UserControls from another window as such
<StackPanel Grid.Row="1" Grid.Column="2"
VerticalAlignment="Stretch">
<local:DownLoadUserControl x:Name="downLoadControl"
Visibility="Visible" Height="588" Width="446" />
<local:KeyFileUserControl x:Name="keyFileControl"
Visibility="Collapsed" Height="588" Width="446" />
</StackPanel>
Would the use of x:Name conflict with the UserControl having a Name
attribute.
Can someone please put me out of my misery.
Regards Peter.
From: [email protected] [mailto:[email protected]] On
Behalf Of Peter Maddin
Sent: Thursday, 3 March 2011 4:28 PM
To: 'ozWPF'
Subject: RE: Adding ListBoxItems to a listbox programmatically
Thanks again
After doing it programmatically I might use your solution with a collection
that is bindable and put my template back in.
i.e. http://msdn.microsoft.com/en-us/library/ms748365.aspx.
Its a lot easier to work with a collection than work with UI elements.
Suppose I should have done it that way in the first place but I like to
know how things work under the hood, so to speak.
WPF is much better than WinForms but the learning curve is much steeper.
I have been able to accomplish things with WPF that I could dream about with
WinForms.
Still have a lot to learn.
Regards Peter.
_______________________________________________
ozwpf mailing list
[email protected]
http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf