2017-04-18 3 views
1

WebBrowserとSliderの2つの要素がありますが、ユーザーが開くドキュメントの種類に応じて1つを隠して表示しようとしています。またはビデオファイル(mp4)。しかし、現在、私はPDFファイルを開くと、Webブラウザは隠されたままです。 MainWindow.xamlでWPF - WebBrowserのコードビハインドの設定が機能していない

、私はMainWindow.xaml.csで

<WebBrowser x:Name="PDFView" Width="600" 
        Height="410" Visibility="{Binding PDFVisible}"> 
</WebBrowser> 

<FFmpegFramework:MediaElement Grid.Row="0" x:Name="MediaElement" 
        Height="400" Background="Gray" Visibility="{Binding VideoVisible}"/> 

を持って、私は私が持っている、MainWindowModel.csで

else if (fileName.Contains("pdf")) 
{ 

    MainWindowViewModel dataContext = this.DataContext as MainWindowViewModel; 
    dataContext.PDFVisible = Visibility.Visible; 
    dataContext.VideoVisible = Visibility.Collapsed; 

    //PDFView.Navigate("file:///" + fileName); 
} 
else if (fileName.Contains("mp4")) 
{ 
    MainWindowViewModel dataContext = this.DataContext as MainWindowViewModel; 
    dataContext.PDFVisible = Visibility.Collapsed; 
    dataContext.VideoVisible = Visibility.Visible; 
} 

を持っている:

public Visibility PDFVisible 
{ 
    get 
    { 
     return fPDFVisible; 
    } 
    set 
    { 
     this.SetProperty<Visibility>(ref fPDFVisible, value); 
    } 
} 

public Visibility VideoVisible 
{ 
    get 
    { 
     return fVideoVisible; 
    } 
    set 
    { 
     this.SetProperty<Visibility>(ref fVideoVisible, value); 
    } 
} 

private Visibility fPDFVisible = Visibility.Collapsed; 
private Visibility fVideoVisible = Visibility.Visible; 
+0

mainviewmodelはINotifyPropertyChangedを実装していますか? – Krishna

+0

これは、BindableBaseを実装しています。これを調べてINotifyPropertyChangedを実装しています –

+0

btwなぜxaml.csではなく、ビューモデルで変更を行っていますか? – Krishna

答えて

0

あなたは.xaml.csファイルでこの変更を行っている理由は、visibilityを変更するのにobjectsを作成する理由がなぜですか。あなたは直接制御

if (fileName.Contains("pdf")) 
{ 
    PDFView.Visibility = Visibility.Visible; 
    MediaElement.Visibility = Visibility.Collapsed; 
} 
else if (fileName.Contains("mp4")) 
{ 
    PDFView.Visibility = Visibility.Collapsed; 
    MediaElement.Visibility = Visibility.Visible; 
} 

の名前でvisibilityを変更し、結合の「モード=双方向」を変更することを忘れていけないことができます。プロパティも変更されますViewModel

<WebBrowser x:Name="PDFView" Width="600" 
      Height="410" Visibility="{Binding PDFVisible, Mode=TwoWay}" /> 

<FFmpegFramework:MediaElement Grid.Row="0" x:Name="MediaElement" 
       Height="400" Background="Gray" Visibility="{Binding VideoVisible, Mode=TwoWay}" /> 
関連する問題