powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как правильно использовать привязку?
8 сообщений из 8, страница 1 из 1
Как правильно использовать привязку?
    #38851046
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!
Помогите, пожалуйста, с такой проблемой :
нужно использовать привязку для элемента ComboBox. Нужно привязать список и активный элемент списка.
Делаю так :
MainWindow.xaml
Код: c#
1.
2.
3.
4.
5.
6.
<ComboBox x:Name="comboCarBrands" ItemsSource="{Binding CarBrandsSelected}"      SelectionChanged="SelectionChanged_comboCarBrands">
            <ComboBoxItem Content="Toyota"/>
            <ComboBoxItem Content="Mercedes"/>
            <ComboBoxItem Content="Ford"/>
            <ComboBoxItem Content="Lexus"/>
</ComboBox>



MainWindow.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
        private string carBrandsSelected;
        public string CarBrandsSelected
        {
            get
            {
                return carBrandsSelected;
            }
            set
            {
                carBrandsSelected = value;
                OnPropertyChanged("CarBrandsSelected");
            }            
        }

        private ObservableCollection<ComboBoxItem> listCars;
        public ObservableCollection<ComboBoxItem> ListCars
        {
            get
            {
                return listCars;
            }
            set
            {
                listCars = value;
                OnPropertyChanged("ListCars");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string nameProperty)      
        {
            if (PropertyChanged != null)    
            {
                PropertyChanged(this, new PropertyChangedEventArgs(nameProperty));      
            }
        }

       private void SelectionChanged_comboCarBrands(object sender, SelectionChangedEventArgs e)
        {            
            carBrandsSelected = CarBrandsSelected.ToString();
            SecondWindow secondWindow = new SecondWindow(carBrandsSelected);
            secondWindow.Show();
        }


В данном случае привязка не работает, значение свойства CarBrandsSelected пустое. Приложение закрывается на этапе обработки события. Также нужно одновременно привязать ещё и список из comboBox-a в свойство ListCars. Как это всё правильно сделать?
Заранее благодарен за помощь!
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38851908
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ItemsSource имеет тип данных IEnumerable, т. е. это должна быть коллекция, в данном случае это, наверно, ListCars. Значение CarBrandsSelected следует привязывать к свойству SelectedValue, выставив SelectedValuePath="Content". Событие SelectionChanged_comboCarBrands здесь не нужно, если binding выставлен правильно, при выборе элемента списка сработает setter свойства CarBrandsSelected.
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38852167
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ilya81ItemsSource имеет тип данных IEnumerable, т. е. это должна быть коллекция, в данном случае это, наверно, ListCars. Значение CarBrandsSelected следует привязывать к свойству SelectedValue, выставив SelectedValuePath="Content". Событие SelectionChanged_comboCarBrands здесь не нужно, если binding выставлен правильно, при выборе элемента списка сработает setter свойства CarBrandsSelected.
Код: c#
1.
ItemsSource="{Binding ListCars}"


Это не работает! Список пустой.
А как правильно для CarBrandsSelected нужно прописать?
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38852211
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сразу не заметил это, но заполняться он будет только в одну сторону. Если элементы уже указаны, никакого ItemsSource не нужно. Будет так:
Код: xml
1.
2.
3.
4.
5.
6.
<ComboBox x:Name="comboCarBrands" SelectedValue="{Binding CarBrandsSelected, Mode=TwoWay}"      SelectedValuePath="Content">
            <ComboBoxItem Content="Toyota"/>
            <ComboBoxItem Content="Mercedes"/>
            <ComboBoxItem Content="Ford"/>
            <ComboBoxItem Content="Lexus"/>
</ComboBox>
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38852244
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ilya81Я сразу не заметил это, но заполняться он будет только в одну сторону. Если элементы уже указаны, никакого ItemsSource не нужно. Будет так:
Код: xml
1.
2.
3.
4.
5.
6.
<ComboBox x:Name="comboCarBrands" SelectedValue="{Binding CarBrandsSelected, Mode=TwoWay}"      SelectedValuePath="Content">
            <ComboBoxItem Content="Toyota"/>
            <ComboBoxItem Content="Mercedes"/>
            <ComboBoxItem Content="Ford"/>
            <ComboBoxItem Content="Lexus"/>
</ComboBox>



Всё равно не работает - программа выдаёт исключение и закрывается во время работы. А как работать тогда со списком comboCarBrands?
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38852302
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
    	<ComboBox HorizontalAlignment="Left" Margin="10,21,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding carsList}" SelectedItem="{Binding selectedOne}"/>
    	<Label Content="{Binding selectedOne, Mode=TwoWay}" HorizontalAlignment="Left" Margin="13,66,0,0" VerticalAlignment="Top" Width="117" Height="26"/>
        
    </Grid>
</Window>
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38852303
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window, INotifyPropertyChanged
    {

        private ObservableCollection<string> _carsList;

        public ObservableCollection<string> carsList
        {
            get { return _carsList; }
            set {
                _carsList = value;
                onPropertyChanged("carsList");
            }
        }

        private string _selectedOne;

        public string selectedOne
        {
            get { return _selectedOne; }
            set 
            {
                _selectedOne = value;
                onPropertyChanged("selectedOne");
            }
        }

        public MainWindow()
        {
            InitializeComponent();

            carsList = new ObservableCollection<string>();
            carsList.Add("TOYOTA");
            carsList.Add("BMW");
            carsList.Add("NISSAN");


            Loaded += MainWindow_Loaded;
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            this.DataContext = this;
        }

        public event PropertyChangedEventHandler PropertyChanged;
        public void onPropertyChanged(string prop)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
            }
        }
    }
}
...
Рейтинг: 0 / 0
Как правильно использовать привязку?
    #38852385
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор, я бы на вашем месте для начала открыл книгу WPF для начинающих и почитал, вместо того, чтоб задавать глупые вопросы на очень широкие темы. На лицо "синдром" перехода с WF на WPF =)
Вам нужно понять не то, как выполняется привязка, о элементарные основы того как работать с WPF, понять отличия декларативного программирования от императивного и т.д. не хочу вас обидеть, но вы этого не знаете и без этого даже пытаться, что то писать на WPF не имеет смысла. Ни какие знания о привязках вам не помогут.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как правильно использовать привязку?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]