none
Как сделать биндинг к textbox который распологается в datatemplate RRS feed

  • Вопрос

  • Здравствуйте. У меня есть коллекция которая биндиться к листбоксу , в дататемплейте для того чтобы можно было редактировать элементы коллекции сделано что каждый элемент ListBox это textbox. Скажите как мне сделать биндниг к textbox которые в темплэйте находятся?

    Я пробовал сделать так , но это не работает :(

    Делаю так

    <ListBox Grid.Row="0" ItemsSource="{Binding Info}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="0.5*"></ColumnDefinition>
                                <ColumnDefinition Width="0.5*"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <TextBox Grid.Column="0" Width="50" Text="{Binding Path=EmailClient, Mode=TwoWay, Converter={StaticResource conv}}"></TextBox>
                            <TextBox Grid.Column="1" Width="50"></TextBox>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

    Сама коллекция

    private ObservableCollection<InputUserData> _Info = new ObservableCollection<InputUserData>();
            public ObservableCollection<InputUserData> Info
            {
                get 
                {
                    return _Info; 
                }
                set
                {
                    _Info = value;
                    OnPropertyChanged(() => Info);
                }
            }
    
            И мой конвертер
      public class InputStringConverter :IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return value != null ? ((InputUserData)value).PatternString : null;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                var obj = new InputUserData();
                obj.PatternString = (string)value;
                return obj;
            }
        }

    6 октября 2014 г. 6:04

Ответы

Все ответы

  • Сделал :)

     <TextBox Grid.Column="0" Width="50" Text="{Binding EmailClient, Mode=TwoWay, 
                                UpdateSourceTrigger=PropertyChanged}"></TextBox>

    • Помечено в качестве ответа Timur2008 6 октября 2014 г. 9:12
    6 октября 2014 г. 9:12
  • Спасибо, что поделились решением.

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    6 октября 2014 г. 10:16
    Модератор