Как устранить эту ошибку привязки
var oBackgroundGrid = new Grid { Opacity = .5 , DataContext = PortSettings }; oBackgroundGrid.SetBinding ( Panel.BackgroundProperty , new Binding { Source = PortSettings, Path = new PropertyPath ( "PortSettings.CActual" ) , Converter = new ColorTemplateSelector ( ) , UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged , Mode = BindingMode.TwoWay } );
я создаю сетку в коде позади, но она показывает ошибку привязки как
System.Windows.Data Error: 40 : BindingExpression path error: 'PortSettings' property not found on 'object' ''CheckboxSetting' (HashCode=63345626)'. BindingExpression:Path=PortSettings.CActual; DataItem='CheckboxSetting' (HashCode=63345626); target element is 'Grid' (Name=''); target property is 'Background' (type 'Brush')
Что я уже пробовал:
я все пробую, не знаю, в чем ошибка
Jon McKee
Где PortSettings
определились? Судя по ошибке, привязка, похоже, не может найти это свойство. Поможет увидеть взаимосвязь между PortSettings
и где этот код определен.
Mahesh Alappuzha
частный объект _portSettings;
настройки портов общедоступных объектов
{
get { return _portSettings; }
набор
{
_portSettings = значение;
On свойство changed ( );
}
}
это свойство Portsettings
PortSettings = карта.Список настроек.Где (
настройка =>
установка.Кодекс.Отделка ( ).Равно ( sysSnmp ) ).Выберите ( Настройка =&ГТ; настройка ).Метода firstordefault ( );
вот я присвоить значение.
Jon McKee
Я имею в виду больше, на каком объекте они определены. Это PortSettings
свойство на том же объекте, что oBackgroundGrid
определяется ли он? Определения выглядят нормально - вероятно, это вопрос того, где они определены. WPF может быть трудно отлаживать без полного кода, потому что так много вещей может пойти не так или быть упущено.
Mahesh Alappuzha
пример пространства имен
{
публичный класс SampleViewModel: PropertyChangedBase
{
#регион [ публичные объекты недвижимости ]
частный объект _portSettings;
настройки портов общедоступных объектов
{
get { return _portSettings; }
набор
{
_portSettings = значение;
On свойство changed ( );
}
}
#endregion
#регион [ публичные методы ]
private void SampleFunction()
{
GetPortStatus ( );
var oBackgroundGrid = новая сетка
{
Непрозрачность = .5 ,
DataContext = Настройки Портов
};
обакграундгрид.SetBinding (Панель.BackgroundProperty ,
новая привязка
{
Источник = PortSettings,
Path = new PropertyPath ("PortSettings.Кактус" ) ,
Конвертер = новый ColorTemplateSelector ( ) ,
UpdateSourceTrigger = UpdateSourceTrigger.события PropertyChanged ,
Mode = BindingMode.двусторонний
} );
омастергрид.Дети.Добавить (oBackgroundGrid );
общественного недействительными GetPortStatus ( )
{
PortSettings = карта.Список настроек.Где (
настройка =>
установка.Кодекс.Отделка ( ).Равно ( sysSnmp ) ).Выберите ( Настройка =&ГТ; настройка ).Метода firstordefault ( );
}
#endregion
}
}
Afzaal Ahmad Zeeshan
Ваш код нуждается в большом количестве приведения типов...
Mahesh Alappuzha
может у конкретных
Afzaal Ahmad Zeeshan
Ошибка говорит о том, что свойство не было найдено на "объекте", а это означает, что вам нужно изменить этот тип объекта на определенный тип, где это свойство может быть найдено.
Видеть здесь для большего.
Mahesh Alappuzha
portsettings имеет другой тип thats, почему я данного вида в качестве объекта