Telerik RadComboBox не показывает выбранный элемент - PullRequest
2 голосов
/ 24 сентября 2010

У меня есть RadComboBox, который я связал, как показано ниже

<telerik1:RadComboBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Margin="5,2" ItemsSource="{Binding RepTypes}" DisplayMemberPath="Path=TypeName"  SelectedValuePath="Value"  SelectedItem="{Binding RepType, Mode=TwoWay}" >

                    </telerik1:RadComboBox>

Когда я выбираю элемент, я ловлю событие Property Changed, но в основном выбор в поле со списком остается пустым.

Что я делаю не так?

Хорошо, я сделал так, чтобы он появился сейчас ... Но я не понимаю, почему ... Или как это изменить, чтобы он работал для меня во всех случаях...

           <telerik1:RadComboBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Margin="5,2" ItemsSource="{Binding RepTypes}" SelectedValuePath="Value"  SelectedItem="{Binding RepType, Mode=TwoWay}"  >

            </telerik1:RadComboBox>

Вот что работает ... Самая большая разница была.Я должен был назвать поле "Имя", а затем связать его и вынуть DisplayMemberPath = "Path = ReportName"

Если это так, то как мне указать элементу управления, какое поле отображать в раскрывающемся списке

Ответы [ 2 ]

4 голосов
/ 27 декабря 2010

Вы как-то меняете свою коллекцию?Элементы управления ищут элементы только один раз.Таким образом, если страница загружается, а затем вы загружаете свою коллекцию RepTypes, она не обновляет словарь.Я делаю что-то подобное, и я лениво загружаю свою коллекцию (по мере ввода вы получаете больше из базы данных).

       <t:RadComboBox x:Name="RepTypeComboBox" Margin="0,1"
                   t:TextSearch.TextPath="TypeName"
                   ItemsSource="{Binding Path=RepTypes, Mode=OneWay}"
                   SelectedValue="{Binding Path=Reptype, Mode=TwoWay, NotifyOnValidationError=True}"                            
                   IsEditable="True" 
                   Grid.Column="1"
                   Grid.Row="2" TabIndex="1">
            <t:RadComboBox.ItemTemplate >
                <DataTemplate >
                  <StackPanel Orientation="Horizontal" >
                    <TextBlock FontWeight="Bold" Text="{Binding Path=TypeName, Mode=OneWay}" Width="75"/>
                        <TextBlock Text=": " />
                    <TextBlock Text="{Binding Path=address1, Mode=OneWay}" />
                        <TextBlock Text=" " />
                    <TextBlock Text="{Binding Path=address2, Mode=OneWay}" />
                        <TextBlock Text=" " />
                    <TextBlock Text="{Binding Path=citystate, Mode=OneWay}" />
                        <TextBlock Text=" " />
                    <TextBlock Text="{Binding Path=zip, Mode=OneWay}" />
                    </StackPanel>
                </DataTemplate>
            </t:RadComboBox.ItemTemplate>
        </t:RadComboBox>
0 голосов
/ 27 сентября 2011

Если вы хотите, чтобы ReportName отображался в качестве вашего элемента отображения, вам нужно только указать это следующим образом:

<telerik1:RadComboBox ItemsSource="{Binding RepTypes}" SelectedValuePath="Value"
SelectedItem="{Binding RepType, Mode=TwoWay}" DisplayMemberPath="ReportName">

</telerik1:RadComboBox>

Вы добавляете дополнительный «путь =», который только вводит в заблуждение XAMLсинтаксический анализатор.

...