Hello Has anyone gotten a datatemplate for a ListView under WPF? I created a very simple C# sample and converted it to IronRuby, the C# works perfectly, the IronRuby example displays my class name, the datatemplate didn't load and bind up to the properties as I hoped.
C# public class StatusListView : ListView { public StatusListView() { var items = new[] { new { message = "One", messageType = "Status" }, new { message = "Two", messageType = "Error" }, new { message = "Shree", messageType = "Status" } }; FrameworkElementFactory textblock = new FrameworkElementFactory(typeof(TextBlock)); Setter setter = new Setter(); setter.Property = TextBlock.FontSizeProperty; setter.Value = 18.0; DataTrigger dataTrigger = new DataTrigger(); dataTrigger.Binding = new Binding("messageType"); dataTrigger.Value = "Status"; dataTrigger.Setters.Add(setter); Style style = new Style(typeof(TextBlock)); style.Triggers.Add(dataTrigger); textblock.SetValue(TextBlock.StyleProperty, style); textblock.SetBinding(TextBlock.TextProperty, new Binding("message")); DataTemplate template = new DataTemplate(); template.VisualTree = textblock; ItemsSource = items; ItemTemplate = template; } } IronRuby - in this sample my listview itemsource is actually set in another piece of code as so. As I state above, the item does show up in the listview but the datatemplate is not applied against it. self.buildMessages = Array.new self.buildMessages.push(BuildMessage.new("Test","Status")) self.statusListView.ItemsSource = self.buildMessages class StatusListView < ListView def initialize() HorizontalAlignment = HorizontalAlignment.Stretch Margin = Thickness.new(0,5,0,5) MinHeight = 200 BuildItemTemplate() end def BuildItemTemplate() begin textblock = FrameworkElementFactory.new(TextBlock.to_clr_type) setter = Setter.new setter.Property = TextBlock.FontSizeProperty setter.Value = 14.0 dataTrigger = DataTrigger.new dataTrigger.Binding = System::Windows::Data::Binding.new("messageType") dataTrigger.Value = "Status" dataTrigger.Setters.Add(setter) style = Style.new(TextBlock.to_clr_type) style.Triggers.Add(dataTrigger) textblock.SetValue(TextBlock.StyleProperty, style) textblock.SetBinding(TextBlock.TextProperty, System::Windows::Data::Binding.new("message")) template = DataTemplate.new template.VisualTree = textblock ItemTemplate = template rescue Exception => e puts "#{e}" end end end Thanks for your time and thoughts Patrick
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core