![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
| |
| | #1 (permalink) |
| | Bug: ItemsControl SelectedValue Binding Fails First off, a disclaimer. This is a "repost" of something that I posted at the forums and the ensuing conversation. This looks like a bug to me but any help would be appreciated. For an easier to read version, go to: http://forums.microsoft.com/MSDN/Sho...83912&SiteID=1 Thanks! Okay, given the following .cs classes and .xaml window, why does having a RichTextBox before the ItemsControl break the SelectedValue Binding? If the RichTextBox is removed, the ItemsControl (specifically its child ListBoxes) get the current value of the State.FavoriteCity property and when a new value is selected the new value is reflected on the State.FavorityCity property. When the RichTextBox is added, however, the value binding no longer works. Bug? I've included all of the source necessary to repro. Just create a new WPF Windows Application and past the XAML below into Window1.xaml and the code into a new file (Classes.cs works fine). To verify that the property was not getting set, I placed a watchpoint on the set { favoriteCity = value; } line and had it output the value being set to the debug window. Code Snippet: Window1.xaml<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:FunkyListBoxSelectedValue="clr-namespace:FunkyListBoxSelectedValue" x:Class="FunkyListBoxSelectedValue.Window1" Title="FunkyListBoxSelectedValue" Height="455" Width="694" > <Window.Resources> <DataTemplate x:Key="StateListItemTemplate"> <StackPanel Width="Auto" Height="Auto"> <TextBlock Text="{Binding Path=Name, Mode=Default}" TextWrapping="Wrap"/> <ListBox Width="Auto" Height="Auto" DisplayMemberPath="Name" ItemsSource="{Binding Path=Cities, Mode=Default}" IsSynchronizedWithCurrentItem="True" SelectedValue="{Binding Path=FavoriteCity, Mode=Default}" SelectedValuePath="Name"/> </< SPAN>StackPanel> </< SPAN>DataTemplate> <FunkyListBoxSelectedValue:Country x:Key="countryData" Name="USA"> <FunkyListBoxSelectedValue:Country.States> <FunkyListBoxSelectedValue:State Name="Kentucky" FavoriteCity="Louisville"> <FunkyListBoxSelectedValue:State.Cities> <FunkyListBoxSelectedValue:City Name="Lexington"/> <FunkyListBoxSelectedValue:City Name="Louisville"/> </< SPAN>FunkyListBoxSelectedValue:State.Cities> </< SPAN>FunkyListBoxSelectedValue:State> <FunkyListBoxSelectedValue:State Name="Washington"> <FunkyListBoxSelectedValue:State.Cities> <FunkyListBoxSelectedValue:City Name="Seattle"/> <FunkyListBoxSelectedValue:City Name="Spokane"/> </< SPAN>FunkyListBoxSelectedValue:State.Cities> </< SPAN>FunkyListBoxSelectedValue:State> <FunkyListBoxSelectedValue:State Name="Minnesota" FavoriteCity="Duluth"> <FunkyListBoxSelectedValue:State.Cities> <FunkyListBoxSelectedValue:City Name="Minneapolis"/> <FunkyListBoxSelectedValue:City Name="Duluth"/> </< SPAN>FunkyListBoxSelectedValue:State.Cities> </< SPAN>FunkyListBoxSelectedValue:State> </< SPAN>FunkyListBoxSelectedValue:Country.States> </< SPAN>FunkyListBoxSelectedValue:Country> </< SPAN>Window.Resources> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="0.5*"/> <ColumnDefinition Width="0.5*"/> </< SPAN>Grid.ColumnDefinitions> <RichTextBox Width="Auto" Height="Auto"/> <ListBox Visibility="Collapsed" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" /> <ItemsControl DataContext="{StaticResource countryData}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Grid.Column="1" ItemTemplate="{DynamicResource StateListItemTemplate}" ItemsSource="{Binding Path=States, Mode=Default}" /> </< SPAN>Grid></< SPAN>Window> Code Snippet: Classes.csusing System;using System.Collections.Generic;using System.Text; namespace FunkyListBoxSelectedValue{ public class Country { public Country() { } public Country(string name) { this.name = name; } private string name; public string Name { get { return name; } set { name = value; } } private List<State> states = new List<State>(); public List<State> States { get { return states; } set { states = value; } } } public class State { public State() { } public State(string name) { this.name = name; } public State(string name, string favoriteCity) { this.name = name; this.favoriteCity = favoriteCity; } private string name; public string Name { get { return name; } set { name = value; } } private string favoriteCity; public string FavoriteCity { get { return favoriteCity; } set { favoriteCity = value; } } private List<City> cities = new List<City>(); public List<City> Cities { get { return cities; } set { cities = value; } } } public class City { public City() { } public City(string name) {this.name = name; } private string name; public string Name { get { return name; } set { name = value; } } }} |
My System Specs![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| Has a SelectedValue which is invalid because it does not exist | .NET General | |||