Member 12061698 Ответов: 3

Как я могу привязать TextBlock с текстом в поле со списком (см. ниже) выбранный элемент? Мне просто нужно знать правильное выражение привязки.


У меня есть ComboxBox, чей XAML находится ниже. Мне нужно привязать текстовые блоки, которые находятся в другом месте формы, к текстовым блокам в выбранном элементе ComboBox. Как мне это сделать?

<combobox x:name="VictimNames" margin="0,5,0,0" height="30" fontweight="Bold" width="600" 

="" itemssource="{Binding Form104CModel.Incident.Victims}" isreadonly="True" iseditable="False" selecteditem="">
    <combobox.itemtemplate>
        <datatemplate>
            <grid>
                <grid.rowdefinitions>
                    <rowdefinition>
                
                <grid.columndefinitions>
                    <columndefinition width="100">
                    <columndefinition width="100">
                    <columndefinition width="90">
                    <columndefinition width="100">
                    <columndefinition width="100">
                    <columndefinition width="100">
                
                <textblock grid.row="0" grid.column="0" x:name="VictimLastName" text="{Binding LastName}">
                <textblock grid.row="0" grid.column="1" x:name="VictimFirstName" text="{Binding FirstName}">
                <textblock grid.row="0" grid.column="2" x:name="VictimMiddleName" text="{Binding MiddleName}">
                <textblock grid.row="0" grid.column="3" x:name="VictimRace" text="{Binding Race}">
                <textblock grid.row="0" grid.column="4" x:name="VictimGender" text="{Binding Gender}">
                <textblock grid.row="0" grid.column="5" x:name="VictimDOB">
                    <textblock.text>
                        <binding path="DOB">
                            <binding.converter>
                                <infraconverters:dateconverter>
                                           </Binding.Converter>
                                        </Binding>
                                    </TextBlock.Text>   
                                    </TextBlock>
                                </Grid>
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>


Что я уже пробовал:

Я уже пробовал
Text="{Binding VictimNames.SelectedItem.<field>}"

для каждого текстового блока замените <field> шаблоном ComboBox TextBox x:Name, но это не сработало.

Member 12061698

Я просил ответа на проблему, а не редакторского мнения. Если это лучшее, что вы можете сделать, то вы совершенно бесполезны. И ты считаешься главным экспертом? Такого рода "экспертная" помощь мне не нужна.

3 Ответов

Рейтинг:
2

Gerry Schmitz

Вот что происходит, когда вы бросаете код позади: путаница и задержки.

Вы должны привязать выбранный элемент (объект) к правильному "типу", а затем привязать этот экземпляр к текстовым полям; по умолчанию, если выбранный индекс равен -1 (т. е. "ничего" не выбрано).

(Да, я тоже высказываю свое мнение).


Рейтинг:
19

Member 12061698

I found the answer.  It was as simple as I first thought.  The ComboBox was to be populated with victim data when the user selected a victim.  

I figured it had to be a simple binding to the selected item, and it is.  Here is how it is done for the InvolvementNumber, which is a victim property. VictimNames is the ComboBox, and the Path got me there. 

 <StackPanel Grid.Row="0" Grid.Column="0">
     <TextBlock> #</TextBlock>
     <TextBlock Name="VictimNumber"  
         Style="{StaticResource PartIIGridIsEnabledTextBlock}" 
         Text="{Binding ElementName=VictimNames,Path=SelectedItem.InvolvementNumber}"/> </StackPanel>

One more thing: The Path must go to the property of the underlying data, not the name of the object in the ComboBox.ItemTemplate.


Рейтинг:
1

Member 12061698

если я правильно понимаю, когда пользователь выбирает элемент из выпадающего списка, выбранный элемент используется для заполнения объекта, который привязан к текстовым блокам.

Как насчет этого:
Выберите индекс из списка для привязки элементов TextBlock базовых данных поля со списком ComboBox.