Моя проблема в основном описана в заголовке этой темы.
У меня есть таблица данных, которая динамически заполняется различными записями:
<DataGrid
x:Name="searchResult"
AutoGenerateColumns="True"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Path=SearchResult}" />
Рядом с ней находится набор текстовых блоковтакже динамически генерируется:
<ItemsControl
x:Name="searchForm"
ItemTemplate="{StaticResource formInputTest}"
ItemsSource="{Binding SearchForm, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Шаблон, который я использую в ItemsControl, выглядит в основном так:
<TextBox
Tag="{Binding Index}"
Text="{Binding ElementName=searchResult, Path=SelectedValue.a, UpdateSourceTrigger=PropertyChanged}" />
Теперь давайте предположим, что моя сетка данных имеет 2 столбца (a и b) и яиметь 2 текстовых поля с одинаковыми именами (а и б).Теперь я хочу выбрать решетку данных и, как два текстовых поля, которые будут автоматически заполнены значениями из соответствующей строки.
К сожалению, я не знаю, как получить это динамическое связывание.Если я связываю свойство TextBox Text-свойства статически с searchResult-> SelectedValue.a, оно работает нормально, но, как вы можете видеть, только статическое.Это то, что я сделал в третьем кодовом поле выше.
ItemsControl, который содержит TextBoxes, имеет привязку к "SearchForm".SearchForm имеет свойство «Index», которое является именем столбца.Итак, TextBox знает имя столбца, к которому он должен быть привязан.Чтобы прояснить это, я связал TextBox.Tag с индексом, который отлично работает.
По сути, я хочу, чтобы моя привязка TextBox выглядела так:
<TextBox
Text="{Binding ElementName=searchResult, Path=SelectedValue.{Binding Index}, UpdateSourceTrigger=PropertyChanged}" />
Но, как вы могли бызнаете, привязка внутри привязки не работает.
Кто-нибудь знает, как связать их с динамически генерируемыми объектами вместе?Спасибо за любую подсказку!
ОБНОВЛЕНИЕ 2019/03/2007
Спасибо, dymanoid!Это принесло мне некоторый прогресс, но я все еще не на финишной прямой.
Я создал свойство view-model и связал с ним как Datagrid-SelectedItem, так и свойство TextBox-Text.Поскольку SelectedItem является своего рода словарем (BindablePublicDictionary), я использую конвертер (IMultiValueConverter) в TextboxBinding, чтобы преобразовать запись словаря как в индекс текстового поля, так и в текст / значение.
Это работаетхорошо, я выбираю строку данных, и 3 динамически сгенерированных поля ввода заполнены.
К сожалению, если я отредактирую одно из этих заполненных текстовых полей, остальные 2 будут очищены, а моя сетка данных не изменится.
Я реализовал OnPropertyChanged, мои привязки - TwoWay, и вызывается функция ConvertBackFunction, которая возвращает данные в соответствии с типом targetType из самой функции.
Кто-нибудь имеет опыт работы с привязками / преобразователем между сетью данных / словареми текстовые поля, особенно в отношении функции convertBack?