привязка в wpf не работает, не могу понять, почему - PullRequest
0 голосов
/ 21 мая 2018

У меня есть приложение wpf. Я использую некоторый код xaml, который должен позволять мне просматривать файлы pdf, я только начал использовать привязку данных и не представляю, как это не работает для меня.

здесь m XAML:

<Grid>
<telerik:RadPdfViewerToolBar RadPdfViewer="{Binding ElementName=pdfViewer, Mode=OneTime}" SignaturePanel="{Binding ElementName=signaturePanel, Mode=OneTime}"/>
<telerik:SignaturePanel x:Name="signaturePanel" PdfViewer="{Binding ElementName=pdfViewer, Mode=OneWay}" Grid.Row="1"/>
<telerik:RadPdfViewer x:Name="pdfViewer" DocumentSource="{Binding Path=PathOfPdf, Mode=TwoWay}"  DataContext="{Binding CommandDescriptors, ElementName=pdfViewer}" telerik:RadPdfViewerAttachedComponents.RegisterSignSignatureDialog="True" telerik:RadPdfViewerAttachedComponents.RegisterFindDialog="True" Grid.Row="2" telerik:RadPdfViewerAttachedComponents.RegisterSignaturePropertiesDialog="True" telerik:RadPdfViewerAttachedComponents.RegisterContextMenu="True"/>
<Grid>

А здесь код позади:

public partial class Page2 : Page, INotifyPropertyChanged
{
public Page2()
    {
        InitializeComponent();
        DataContext = this;
     }  

private string _pathOfPdf= @"D:\MyFile.pdf";

    public string PathOfPdf
    {
        get{ return _pathOfPdf; }
        set{
            if (_pathOfPdf != value)
            {
                _pathOfPdf = value;
                OnPropertyChanged();
            }
        }

    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }   
}

Если я не использую Biding, он работает нормально.Я, если я делаю (на XAML):

DataContext="D:\MyFile.pdf" это показывает PDF

1 Ответ

0 голосов
/ 21 мая 2018

Вам необходимо установить DataContext элемента управления или источник привязки на Page, где определено свойство источника:

<telerik:RadPdfViewer x:Name="pdfViewer"
                      DocumentSource="{Binding Path=PathOfPdf, RelativeSource={RelativeSource AncestorType=Page}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...