我正在使用RelayCommand
,它是由microsoft在其ICommand
example中实现的。这是我的代码简介。
XAML:
<TextBox x:Name="YoutubeUrlText"
PlaceholderText="Insert link from youtube here... "
FontSize="20" FontStyle="Italic" Width="450" />
<Button x:Name="ConvertButton" FontFamily="Segoe MDL2 Assets" FontSize="20" Content=""
Grid.Column="1" Height="40"
HorizontalAlignment="Left" VerticalAlignment="Center"
Foreground="White" BorderBrush="#FF797979" Background="#FF0096FF"
Command="{x:Bind urlSearchViewModel._GetVideo(YoutubeUrlText.Text)}"/>
XAML背后的代码:
public sealed partial class UrlSearchPage : Page
{
public UrlSearchViewModel urlSearchViewModel;
public UrlSearchPage()
{
this.InitializeComponent();
urlSearchViewModel = new UrlSearchViewModel();
}
}
ViewModel代码:
public RelayCommand _GetVideo(string url)
{
return new RelayCommand(() => this.getVideo(url));
}
private void getVideo(string url)
{
try
{
FileInfo mp4 = youtubeConverter.DownloadVideoAsync(url,YoutubeConverter.TemporaryFolder).Getawaiter().GetResult();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
例如,只需忽略愚蠢的异步部分。问题是url
始终是一个空字符串,因此每次按下Exception
时都会收到Button
。