[英]WPF - setting visibility on code behind for a WebBrowser not working
I have two elements, a WebBrowser and a Slider, and I'm trying to hide one and show the other depending on which type of document a user opens, a PDF or a video file (mp4). 我有两个元素,WebBrowser和Slider,我试图隐藏一个并显示另一个,具体取决于用户打开的文档类型,PDF或视频文件(mp4)。 But, currently, when I open a PDF file the WebBrowser remains hidden. 但是,目前,当我打开PDF文件时,WebBrowser仍然是隐藏的。
In MainWindow.xaml, I have 在MainWindow.xaml中,我有
<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}"/>
In MainWindow.xaml.cs, I have 在MainWindow.xaml.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;
}
In MainWindowModel.cs, I have: 在MainWindowModel.cs中,我有:
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;
You are doing this changes in .xaml.cs file than why are you create objects
to change visibility
. 您在.xaml.cs文件中进行此更改,而不是为什么要创建objects
来更改visibility
。 you can directly change visibility
by name of control 您可以通过控件名称直接更改visibility
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;
}
and dont forget to change 'Mode=TwoWay' in binding. 并且不要忘记在绑定中更改“Mode = TwoWay”。 it will also changed property in ViewModel
它还将在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}" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.