0

Есть в главном окне label

<Label Grid.Row="0" Grid.Column="1" DataContext="{StaticResource h}" Content="{Binding Path=test}"/>

Binding - работает.

Есть в главном окне

<controls:uc x:Name="tttt" DataContext="{StaticResource h}" MyProperty="{Binding Path=test}"/>

Binding - НЕ работает.

Исходник uc

public int MyProperty
    {
        get { return (int)GetValue(MyPropertyProperty); }
        set { SetValue(MyPropertyProperty, value); lCaption.Content = value.ToString(); }
    }
// Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty MyPropertyProperty =
    DependencyProperty.Register(&quot;MyProperty&quot;, typeof(int), typeof(uc), new PropertyMetadata(0));

Почему не работает? С label всё отлично но если нужно сделать Binding к label в UserControl начинаются танцы с бубном и всё равно не работает.

  • 1
    Почему вы всем ставите статичный DataContext? Он во-первых должен быть не статичным, а во-вторых устанавливаться один раз окну. Далее, как в XAML контрола у вас привязано MyProperty? – EvgeniyZ Oct 01 '20 at 19:52
  • Я с WPF на давно работаю и почему он не должен быть статичным? "Далее, как в XAML контрола у вас привязано MyProperty?" - никак, lCaption.Content = value.ToString(); - разве тут не должен content лейбла измениться? – Sergey Zzz Oct 01 '20 at 19:58
  • 1
    Статика, в таком исполнении - зло! Запомните это раз и на всегда. Сам же контролл состоит из XAML и c# части, думаете это просто так? Задайте самому UC в начале имя (<UserControl ... x:Name="uc" ...>), далее привяжите свой элемент <Lable Content="{Binding MyProperty, ElementName=uc}">. Можете посмотреть любой ответ тут на SO по UserControl, например вот. – EvgeniyZ Oct 01 '20 at 20:04
  • 1
    Большое спасибо, помогло. – Sergey Zzz Oct 01 '20 at 20:09
  • Подскажи ещё плиз как прибиндить столбец из DataTable {Binding Path=test.Rows[0][0]} - так работает. А так {Binding Path=test.Rows[0]["x"]} - нет. – Sergey Zzz Oct 01 '20 at 20:53
  • Ну начнем с того, что это другой вопрос, а тут принято их задавать отдельно. А по проблеме - читайте логи, вам студия должна говорить что ей не нравиться в окне вывода. – EvgeniyZ Oct 01 '20 at 20:55

0 Answers0