Member 13157670 Ответов: 2

Как сделать привязку данных в WPF C# ( выберите из combox )


Как сделать привязку в Wpf C#

Я пытаюсь сделать привязку

при выборе элемента формы combobox( элемент сверху,снизу,слева,справа)


У меня есть 6 текстовых полей для обновления значения (min и max display), но оно не обновляется.

Нужна чья-то помощь..

Заранее спасибо..

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

общественный разделяемого класса TeachMenu : стр.
{

частная наблюдаемая коллекция<parampos> Param;
публичный TeachMenu()
{
метод InitializeComponent();


Param1 = новый ObservableCollection<posparam>()
{
new PosParam() { R_min = 1, R_max = 255, G_min = 1, G_max = 255, B_min = 1, B_max = 255 },
новый PosParam() { R_min = 2, R_max = 255, G_min = 2, G_max = 255, B_min = 2, B_max = 255 },
новый PosParam() { R_min = 3, R_max = 255, G_min = 3, G_max = 255, B_min = 3, B_max = 255 },
новый PosParam() { R_min = 4, R_max = 255, G_min = 4, G_max = 255, B_min = 4, B_max = 255 }
};
TabPositioning.DataContext = Param;

}

общественный класс param
{

общественная int R_min { вам =&ГТ; r_min; набор =&ГТ; r_min = значение; }
общественная int R_max { вам =&ГТ; r_max; набор =&ГТ; r_max = значение; }
общественная int G_min { вам =&ГТ; g_min; набор =&ГТ; g_min = значение; }
общественная int G_max { вам =&ГТ; g_max; набор =&ГТ; g_max = значение; }
общественная int B_min { вам =&ГТ; b_min; набор =&ГТ; b_min = значение; }
общественная int B_max { вам =&ГТ; b_max; набор =&ГТ; b_max = значение; }
общественные двойной строкой 1 { Вам =&ГТ; строкой 1; набор =&ГТ; строкой 1 = значение; }
общественные двойной столбец col1 { вам =&ГТ; столбца col1; набор =&ГТ; столбца col1 = значение; }
общественные двойной для row2 { вам =&ГТ; для row2; набор =&ГТ; для row2 = значение; }
общественные двойной столбец col2 { вам =&ГТ; столбец col2; установите => в столбец col2 = значение; }

общедоступное перечисление PosFrame
{
Рамка,
Верхний,
Дно,
Слева,
Правильно
}
private int r_min;
private int r_max;
частный int g_min;
private int g_max;
частный int b_min;
private int b_max;

частный двойной ряд1;
частный двухместный col1;
отдельный двухместный для row2;
частный двухместный col2;

}

Ajcek84

Вы должны показать нам, как выглядит ваше представление XAML.
Также неплохо переместить модель в другой класс, например TeachMenuViewModel, а затем установить DataContext страницы в его экземпляр.

Member 13157670

код XAML:

<ComboBox x:Name="cbPosFrame" HorizontalAlignment="left" Margin="56,120,0,772" Width="89" RenderTransformOrigin="0.993,0.521"/>

&ЛТ;слайдер поле HorizontalAlignment="левой" маржи="170,210,0,0" имеет="топ" высота="30" ширина="414" минимум="0" максимальное="255" значение="{путь привязки=R_min,режим=с двусторонним движением}"&ГТ;
&ЛТ;текстовое поле HorizontalAlignment="левой" высота="28" маржи="80,210,0,0" TextWrapping значение="обернуть" имеет="топ" ширина="65" текст="{путь привязки=R_min, режим=с двусторонним движением}"&ГТ;


&ЛТ;слайдер поле HorizontalAlignment="левой" высота="28" маржи="170,252,0,0" имеет="топ" ширина="414" минимум="0" максимальное="255" значение="{путь привязки=R_max,режим=с двусторонним движением}"&ГТ;
&ЛТ;текстовое поле HorizontalAlignment="левой" высота="28" маржи="80,252,0,0" TextWrapping значение="обернуть" имеет="топ" ширина="65" текст="{путь привязки=R_max, режим=с двусторонним движением}"&ГТ;


&ЛТ;слайдер поле HorizontalAlignment="левой" высота="28" маржи="170,292,0,0" имеет="топ" ширина="414" минимум="0" максимальное="255" значение="{путь привязки=G_min,режим=с двусторонним движением}"&ГТ;
&ЛТ;текстовое поле HorizontalAlignment="левой" высота="28" маржи="80,292,0,0" TextWrapping значение="обернуть" имеет="топ" ширина="65" текст="{путь привязки=G_min, режим=с двусторонним движением}"&ГТ;


&ЛТ;слайдер поле HorizontalAlignment="левой" высота="28" маржи="170,330,0,0" имеет="топ" ширина="414" минимум="0" максимальное="255" значение="{путь привязки=G_max,режим=с двусторонним движением}"&ГТ;
&ЛТ;текстовое поле HorizontalAlignment="левой" высота="28" маржи="80,330,0,0" TextWrapping значение="обернуть" имеет="топ" ширина="65" текст="{путь привязки=G_max, режим=с двусторонним движением}"&ГТ;


&ЛТ;слайдер поле HorizontalAlignment="левой" высота="28" маржи="170,368,0,0" имеет="топ" ширина="414" минимум="0" максимальное="255" значение="{путь привязки=B_min,режим=с двусторонним движением}"&ГТ;
&ЛТ;текстовое поле HorizontalAlignment="левой" высота="28" маржи="80,368,0,0" TextWrapping значение="обернуть" имеет="топ" ширина="65" текст="{путь привязки=B_min, режим=с двусторонним движением}"&ГТ;


&ЛТ;слайдер поле HorizontalAlignment="левой" высота="28" маржи="170,404,0,0" имеет="топ" ширина="414" минимум="0" максимальное="255" значение="{путь привязки=B_max,режим=с двусторонним движением}"&ГТ;
&ЛТ;текстовое поле HorizontalAlignment="левой" высота="28" маржи="80,404,0,0" TextWrapping значение="обернуть" имеет="топ" ширина="65" текст="{путь привязки=B_max, режим=с двусторонним движением}"&ГТ;

Member 13157670

Это программа Xaml... Когда пользователь меняет положение ползунка, текстовое поле также изменяется через объект привязки..

2 Ответов

Рейтинг:
2

Member 13157670

Привет ,

Я приложил код.. При выборе элемента со списком... Значение слайдера и текстового поля должно измениться..Спасибо за помощь..

Привязка - Google Диск[^]


Рейтинг:
0

Graeme_Grant

Привязка работает с Свойства- нет , не Поля. Так что меняйся:

private ObservableCollection<parampos> Param;

с
public ObservableCollection<parampos> Param {get; set;}

Кроме того, чтобы очистить ObservableCollection, всегда используйте Clear() метод и не только
new ObservableCollection<...>();
как последняя с разрывом переплета.

Подробнее об этом вы можете прочитать здесь: Привязка данных (WPF) | Microsoft Docs[^]