0

Подскажите пожалуйста как сделать привязку не декларативно а в коде, нашел только вот такое про текстБокс

    CollapsedWrap disabledLine numbers off
    static void BindText(TextBox textBox, string property)
    {
    DependencyProperty textProp = TextBox.TextProperty;
    if (!BindingOperations.IsDataBound(textBox, textProp))
    {
  Binding b = new Binding(property);
  BindingOperations.SetBinding(textBox, textProp, b);
}
}

по аналогии пытаюсь переделать под себя

    CollapsedWrap disabledLine numbers off
    DependencyProperty visStPan = stpans[i].Visibility  ; 
    if (!BindingOperations.IsDataBound(stpans[i], visStPan))
    {
     Binding b = new Binding("{ Binding IsChecked, Converter = { 
     StaticResource booleanToVisibilityConverter }, ElementName = 
     chBox001 }");
     BindingOperations.SetBinding(stpans[i], visStPan, b);
     }

но показывает ошибку типов

........
ОшибкаCS0029Не удается неявно преобразовать тип "System.Windows.Visibility" в "System.Windows.DependencyProperty".

показывает на первую строку

подскажите как динамически при создании кнопки в коде создавать и привязки

когда мы декларативно объявляем биндинг в XAML , то делаем так

<Window.Resources>
 <BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/>
</Window.Resources>

<Button  x:Name="but001" Visibility="{Binding IsChecked, Converter=
 {StaticResource booleanToVisibilityConverter}, ElementName=chBox1}" / 
 >

<CheckBox x:Name="chBox1"    IsChecked="True"   />

т.е. используется конвертор

а как теперь через код объявить и применить конверотор в

  DependencyProperty видКн = кнопки[i].Visibility  ;
  • А какой смысл вы в этом видите? – EvgeniyZ Jun 30 '18 at 04:56
  • кнопки и чекБоксы создаються динамически, как их связать чтобы видимость каждой кнопки зависила от своего чекБокса – vova-forum Jun 30 '18 at 05:37
  • @vova-forum из ошибки разве не видно? Нужно указывать свойство зависимости, а не свойство. Пишите "DependencyProperty visStPan = UIElement.VisibilityProperty". – Иван Jun 30 '18 at 06:16
  • Вам же в этом вопросе дали наводку на то, как надо правильно делать, вы пробовали? Суть банально проста, из кода вы не должны знать о контролах во view, каждый объект должен соответствовать своей ViewModel (в которой вы делаете все необходимые свойства для привязки). Вот вам почти идентичная задача (динамически создаваемые объекты, привязка и все по правилам), только еще конвертор прицепить. – EvgeniyZ Jun 30 '18 at 06:47
  • John - что там ? – vova-forum Jun 30 '18 at 07:44
  • попробывал по вашему совету "DependencyProperty visStPan = UIElement.VisibilityProperty" ошибка не удается преобразовать из "System.Windows.Visibility" в "System.Windows.DependencyProperty". – vova-forum Jun 30 '18 at 07:45
  • EvgeniyZ - Вы про что ????? там вопрос вооще о другом , насчет идентичной задачи там тоже мимо, мне не надо MVVM, и насчет конвертора как раз я и спрашиваю – vova-forum Jun 30 '18 at 07:50
  • Ну как говорится, хотите делать костыли - удачи, дело ваше. Мое лишь показать как правильно, а WPF без MVVM, привязок и всего его функционала лучше вовсе не использовать (ибо это как в феррари засунуть мотор от жигули, вроде работает, а не то...), работали бы лучше в WinForm в таком случае... – EvgeniyZ Jun 30 '18 at 08:01
  • ребят ну что же Вы так выводы делаете как то не правильно , я не команда разработчиков а любитель одиночка , а в писании сказано что MVVM это технология для командного использования и только в средних и больших проектах , и с какого мне это счастье пихать в свой код который умещается на ладошке , это MVVM уже пихают куда не попадя – vova-forum Jun 30 '18 at 08:17
  • не знаете ответа начинаете развозить халивары , тут Вам уже к стате не раз уже указывали на это, не знаете промолчите , не понятно уточните вопрос – vova-forum Jun 30 '18 at 08:19
  • @vova-forum значит где-то ещё вы пытаетесь DependencyProperty приравнять Visibility. Вам же пишут, что невозможно преобразовать один тип в другой. В тексте ошибки написано строка, где ошибка: найдите и справьте по аналогии. MVVM - это паттерн проектирования приложения, специально созданная для WPF. Вы учите язык? Тогда пишите консольное приложение и не парьтесь. Вы хотите писать интерфейс в WPF? Тогда сразу учитесь правильному подходу. Сейчас у тебя маленькая прога с двумя кнопками и всё кажется простым, а когда захочешь написать, что-то покрупнее, то всё, что ты знал окажется ненужным. – Иван Jun 30 '18 at 08:24
  • John спасибо за ответ , вот я и не могу DependencyProperty приравнять Visibility , а везде только упоминание про ТекстБоксы, вот я и ищу – vova-forum Jun 30 '18 at 08:55
  • Создание привязки в коде: https://professorweb.ru/my/WPF/binding_and_styles_WPF/level8/8_3.php – Андрей NOP Jun 30 '18 at 09:00
  • Чтобы использовался конвертер, добавьте: bind.Converter = new MyConverter(); – Андрей NOP Jun 30 '18 at 09:03

0 Answers0