Nano Hash - криптовалюты, майнинг, программирование

Привязка DependencyProperty не работает

Моя цель здесь — отключить и включить некоторые элементы в графическом интерфейсе на основе значения флага, который будет изменен во время выполнения в коде для окна. Для этого я настроил DependencyProperty. Я считаю, что все, что мне нужно сделать, это связать это свойство с соответствующими свойствами «IsEnabled», и все должно работать. Что-то не так подключается должным образом, поэтому ничего не происходит. Я пропустил какой-то синтаксис здесь или что-то в этом роде?

Вот привязка в WPF (MainWindow.xaml):

<MenuItem Name="LoggingMenuItem" Header="_Logging" IsCheckable="True" Checked="LoggingMenuItem_Checked" IsEnabled="{Binding  ElementName=IsMonitoring}" />

Вот объявление свойства «IsMonitoring» в коде позади (MainWindow.xaml.cs):

public static readonly DependencyProperty IsMonitoringProperty = 
   DependencyProperty.Register("IsMonitoring", typeof(Boolean), typeof(Window));

public bool IsMonitoring
{
   get { return (bool)GetValue(IsMonitoringProperty); }
   set { SetValue(IsMonitoringProperty, value); }
}

Ответы:


1

Ваша привязка настроена неправильно. Атрибут ElementName должен указывать на «Элемент» (то есть элемент управления) в окне, и вы должны использовать атрибут Path, чтобы указать имя свойства.

В вашем случае вы хотите дать окну имя для использования. Я склонен использовать имя «это», но, конечно, это может быть что угодно.

<Window x:Name="this"
        ...
        >
    ...
    <MenuItem IsEnabled="{Binding ElementName=this, Path=IsMonitoring}" />
    ...
</Window>
09.11.2011
  • К вашему сведению, это сработало, но мне пришлось добавить к этому кавычки, чтобы оно скомпилировалось как «x: Name = this». Это интересно, хотя из кода я могу без проблем получить доступ к элементам и свойствам только по имени. То же самое верно и в коде WPF, когда я привязываюсь к «другим» элементам пользовательского интерфейса, которые также объявлены в WPF, проблем нет. Итак, почему это особый случай, когда я пытаюсь получить доступ к элементам, объявленным в коде позади, из кода WPF? 09.11.2011
  • В таком случае Ultratrunks, не забудьте отметить это как ответ 10.11.2011
  • @Ultratrunks — по умолчанию привязки будут просматривать свойства элемента управления в DataContext (обычно это ваша модель представления). В вашем случае вы хотите посмотреть на свойство самого элемента управления. 10.11.2011
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..