Привязка текстового контекста UserControl - PullRequest
1 голос
/ 28 июля 2011

Немного поработав, и благодаря ответу я сейчас использую:

public class PopupProgramazione : DependencyObject
    {
        public static readonly DependencyProperty ShowProperty = DependencyProperty.Register("FirstNo", typeof(bool), typeof(PopupProgramazione), null);

        public bool Show
         {
            get { return (bool)GetValue(ShowProperty); }
            set { SetValue(ShowProperty, value); }
         }
    }

на мой взгляд Модель:

   public PopupProgramazione Popup
    {
        get { return _Popup; }
        set
        {
            _Popup = value;
            RaisePropertyChanged("Popup");
        }
    }

    public void Programmazione(InterventoSchedeConsuntivi intervento)
    {
        Popup.Show = true;
        InterventoPopupProgramazione = intervento;
    }

странная проблема возникает с xaml:

<local:PopupProgrammazione 
             x:Name="popupProg"
            Height="300" 
            Width="400"
            Canvas.ZIndex="2"
            Canvas.Left="150"
            Canvas.Top="150" Grid.RowSpan="4" Grid.Column="2" Margin="7,4,12,296"
            Visibility="{Binding Path=Popup.Show, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}}"
            DataContext="{Binding Path=InterventoPopupProgramazione}"
            >
        </local:PopupProgrammazione>

Если у меня установлен только видимость, он работает хорошо, и я вижу, что я выполняю конвертер с помощью отладки.

Если есть оба, то инициализация всплывающего окна не производится (всплывающее окно отображается, тогда как Popup.Show = false). Но если я закрою всплывающее окно:

private void Close_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.Visibility = Visibility.Collapsed;
        }

и затем пройдите мимо моей функции, чтобы открыть ее, она работает, но без прохождения через конвертер.

Может ли кто-нибудь объяснить мне, что там происходит?

[EDIT] Вместо того, чтобы специально привязывать мой usercontrol к выделенному объекту, я использую datacontext основного xaml, и тогда он работает отлично. [/ EDIT]

1 Ответ

0 голосов
/ 28 июля 2011

Вам нужно использовать свойство зависимости

http://msdn.microsoft.com/en-us/library/ms752914.aspx

Достойное руководство http://www.switchonthecode.com/tutorials/wpf-tutorial-introduction-to-dependency-properties

В основном вам нужно настроить статический метод ... thisзарегистрирует свойство и позволит вам связать его в XAML.Затем вы переопределяете свое свойство, чтобы получить и установить свойство зависимости для использования в вашем коде.

Это выглядит намного сложнее, чем на самом деле;)

Редактировать:

о... извините, может быть, я неправильно понял .. не можете ли вы просто привязать значение, которое находится в viewmodel, так же, как вы сделали для showPopup?Не удалось зарегистрировать это событие с измененным свойством?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...