Привязка текста к текстовому полю

#c# #wpf #data-binding

#c# #wpf #привязка к данным

Вопрос:

У меня есть LineSeries , к которому я привязываю данные из ObservableCollection этого типа ChartData . Теперь, в моем пользовательском интерфейсе, у меня есть TextBox , в котором мне нужно показать значение Y ряда. Как мне привязать Value свойство к TextBox

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        ObservableCollection<ChartData> lineSeries1Data = new ObservableCollection<ChartData>();
        simChart.DataContext = lineSeries1Data;
    }
public class ChartData : INotifyPropertyChanged
{
    DateTime _Name;
    double _Value;

    public DateTime Name
    {
        get
        {
            return _Name;
        }
        set
        {
            _Name = value;
            OnPropertyChanged("Name");
        }
    }

    public double Value
    {
        get
        {
            return _Value;
        }
        set
        {
            _Value = value;
            OnPropertyChanged("Value");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }      
}
  

Это мой XAML для TextBox :

 <TextBox Name="TxtSignal1Vh1" DataContext="lineSeries1Data" Text="{Binding ChartData.Value}" />
  

Комментарии:

1. Value свойство чего, ChartData ?

2. Ваша цель не ясна, у вас их много ChartData в ObservableCollection , но только один TextBox . Что Value должно отображаться?

3. У меня есть Chart и у меня есть TextBox . Chart Значения x, y привязаны к двум свойствам в ChartData классе через ObservableCollection . Теперь я хочу показать значение y диаграммы в TextBox . Буквальным именем y-значения является свойство «Value».

4. @Abhishek simchart. Datacontext=lineSeries1Data; что такое simchart??

5. @AbhinavSharma : simChart — это название LineSeries

Ответ №1:

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

  public MainWindow()
    {
        InitializeComponent();
        observableCollection<DataChart>1st=new observableCollection<DataChart>();
        observableCollection<DataChart>2nd=new observableCollection<DataChart>();
        win.DataContext = (1st Observable Collection)
        lose.DataContext=(2nd Observable Collection)
    }
  

MainWindows xaml

 <Grid>
    <this:UserControl1 x:Name="win"  Margin="10,21,325,144"/>
    <this:UserControl1 x:Name="lose" Margin="275,21,10,144"/>
</Grid>
  

Пользовательский контроль xaml

  <Grid>
    <TextBox  Text="{Binding Path=Value}" VerticalAlignment="Top" Width="164"/>
   <TextBox   Text="{Binding Path=Name}" VerticalAlignment="Top" Width="164"/>
</Grid>
  

Комментарии:

1. Если у меня есть более одной диаграммы, то каким был бы подход? Мне пришлось бы правильно установить DataContext для каждой из диаграмм? Как я тогда буду устанавливать DataContext для TextBox ?

2. Итак, как мне установить DataContext для TextBox тогда? Можете ли вы привести пример, который устанавливает DataContext непосредственно к элементу управления вместо его родительского элемента / предка?

3. @Abhishek Пожалуйста, уточните ваши требования, поскольку я не уверен, чего именно вы хотите….

4. У меня есть две диаграммы. Я явно устанавливаю для DataContext двух диаграмм значение two ObservableCollection s. Обычно, если имеется только одна диаграмма, я могу установить DataContext значение this в Constructor . Но, поскольку у меня есть две диаграммы, я устанавливаю для каждой из диаграмм DataContext собственные ObservableCollection значения. Теперь у меня есть два TextBox варианта, в которых я должен отобразить значение Y для двух графиков. Итак, как мне привязать второе свойство в ObservableCollection (которое является значением Y) к TextBox ?

5. Это просто идея, но как насчет создания UserControl, состоящего из диаграммы текстовых полей, а затем привязки datacontext Usercontrol к его соответствующей наблюдаемой коллекции!!!!