如何在asp.net网站项目中使用xaml
本文关键字:xaml 项目 网站 asp net | 更新日期: 2023-09-27 18:08:24
我可以在ASP中使用XAML文件吗?网络项目。例如,当我打开localhost/tryconnect.aspx
时,我希望看到XAML文件。这可能吗?
MainWindows.xaml
code:
<Window x:Class="TFSMove.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="http://schemas.microsoft.com/netfx/2009/xaml/presentation"
x:Name="_MainWindow" Width="500" Height="450"
Title="Move TFS Work Items" >
<Window.Resources>
<local:AndConverter x:Key="AndConverter"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="350" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="3" >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" Margin="5" Content="TFS Server:"/>
<TextBox x:Name="_TFSServer" Grid.Row="0" Grid.Column="1" Margin="5" TextChanged="_TFSServer_TextChanged" >
<TextBox.Resources>
<VisualBrush x:Key="hint" TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left">
<VisualBrush.Transform>
<TranslateTransform X="5" Y="0" />
</VisualBrush.Transform>
<VisualBrush.Visual>
<Grid>
<TextBox BorderThickness="0" FontStyle="Italic" Foreground="Black" Text="<Enter the URL to the TFS project server.>"/>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource hint}" />
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource hint}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<Button x:Name="_BtnMove" Grid.Row="0" Grid.Column="2" Margin="5" Click="_BtnMoveClick" Content="¡Move!">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource AndConverter}" Mode="OneWay">
<Binding ElementName="_From_Project" Path="Text" Mode="OneWay"/>
<Binding ElementName="_To_Areas" Path="SelectedItem" Mode="OneWay"/>
<Binding ElementName="_To_Iterations" Path="SelectedItem" Mode="OneWay"/>
</MultiBinding>
</Button.IsEnabled>
</Button>
<Label Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" Margin="5" >SQL Connection:</Label>
<TextBox x:Name="_SQLConnection" Grid.Row="1" Grid.Column="1" MinWidth="100" Margin="5" >
<TextBox.Resources>
<VisualBrush x:Key="hint" TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left">
<VisualBrush.Transform>
<TranslateTransform X="5" Y="0" />
</VisualBrush.Transform>
<VisualBrush.Visual>
<Grid>
<TextBox BorderThickness="0" FontStyle="Italic" Foreground="Black" Text="<Enter the SQL Connection String to the TFL Server SQL database.>"/>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource hint}" />
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource hint}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<Button x:Name="_BtnSQL" Grid.Row="1" Grid.Column="2" Margin="5" Click="_BtnSQLTestClick" IsEnabled="{Binding ElementName=_SQLConnection, Path=Text.Length}" >¡Test!</Button>
<Label Grid.Row="2" Grid.Column="0" HorizontalAlignment="Right" Margin="5" >Query:</Label>
<TextBox x:Name="_WorkItemQuery" Grid.Row="2" Grid.Column="1" MinWidth="100" Margin="5" >
<TextBox.Resources>
<VisualBrush x:Key="hint" TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left">
<VisualBrush.Transform>
<TranslateTransform X="5" Y="0" />
</VisualBrush.Transform>
<VisualBrush.Visual>
<Grid>
<TextBox BorderThickness="0" FontStyle="Italic" Foreground="Black" Text="<Enter the WorkItem Number or Query for moving.>"/>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource hint}" />
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource hint}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<Button x:Name="_BtnQuery" Grid.Row="2" Grid.Column="2" Margin="5" Click="_BtnQueryClick" IsEnabled="{Binding ElementName=_WorkItemQuery, Path=Text.Length}">Search</Button>
</Grid>
<GridSplitter Grid.Column="1" Grid.Row="2" ShowsPreview="True" VerticalAlignment="Stretch" Width="6" HorizontalAlignment="Center" Margin="0,0,0,0" />
<RichTextBox x:Name="_WorkItemDisplay" Grid.Row="2" Grid.Column="0" Margin="5" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<RichTextBox.Resources>
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0" />
</Style>
</RichTextBox.Resources>
</RichTextBox>
<Grid Grid.Row="1" Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition/>
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" FontSize="16" Margin="5,0,5,5">
<GroupBox.Header>From</GroupBox.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock x:Name="_From_Project" Grid.Row="0" Margin="5,0,5,0" TextWrapping="WrapWithOverflow" />
</Grid>
</GroupBox>
<Rectangle Grid.Row="1" Margin="1" SnapsToDevicePixels="True" Height="1" Width="Auto" Fill="Black" />
<GroupBox Grid.Row="2" FontSize="16" Margin="5,0,5,5">
<GroupBox.Header>To</GroupBox.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Label Grid.Row="0" Margin="5,0,5,0" FontSize="{Binding ElementName=_BtnMove, Path=FontSize}" Content="Project:"/>
<ComboBox x:Name="_To_Projects" Grid.Row="1" Margin="5,0,5,5" FontSize="{Binding ElementName=_BtnMove, Path=FontSize}" SelectionChanged="_To_Projects_SelectionChanged" />
<Label Grid.Row="2" Margin="5,0,5,0" FontSize="{Binding ElementName=_BtnMove, Path=FontSize}" Content="Area:"/>
<ComboBox x:Name="_To_Areas" Grid.Row="3" Margin="5,0,5,5" FontSize="{Binding ElementName=_BtnMove, Path=FontSize}" SelectionChanged="UpdateMoveEnabled" />
<Label Grid.Row="4" Margin="5,0,5,0" FontSize="{Binding ElementName=_BtnMove, Path=FontSize}" Content="Iteration:"/>
<ComboBox x:Name="_To_Iterations" Grid.Row="5" Margin="5,0,5,5" FontSize="{Binding ElementName=_BtnMove, Path=FontSize}" SelectionChanged="UpdateMoveEnabled"/>
</Grid>
</GroupBox>
</Grid>
</Grid>
</Window>
MainWindow.xaml.cs
code:
namespace TFSMove
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static DependencyProperty MoveEnabledProperty = DependencyProperty.Register("MoveEnabled", typeof(bool), typeof(MainWindow), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public bool? MoveEnabled
{
get
{
return GetValue(MoveEnabledProperty) as bool?;
}
set { SetValue(MoveEnabledProperty, value); }
}
public static DependencyProperty TFS_ServerProperty = DependencyProperty.Register("TFS_Server", typeof(Uri), typeof(MainWindow), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
private Uri TFS_Server
{
get
{
return
GetValue(TFS_ServerProperty) as Uri;
}
set { SetValue(TFS_ServerProperty, value); }
}
public static DependencyProperty TFS_WorkItemsProperty = DependencyProperty.Register("TFS_WorkItems", typeof(WorkItemCollection), typeof(MainWindow), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
private WorkItemCollection TFS_WorkItems
{
get
{
return GetValue(TFS_WorkItemsProperty) as WorkItemCollection;
}
set { SetValue(TFS_WorkItemsProperty, value); }
}
private DispatcherTimer _tfs_server_text_changed_timer;
public MainWindow()
{
InitializeComponent();
_BtnQuery.IsEnabled = false;
}
private void _TFSServer_TextChanged(object sender, TextChangedEventArgs e)
{
if (_tfs_server_text_changed_timer == null)
{
_tfs_server_text_changed_timer = new DispatcherTimer();
_tfs_server_text_changed_timer.Tag = sender;
_tfs_server_text_changed_timer.Tick += _TFSServer_PostTextChanged;
}
_tfs_server_text_changed_timer.Interval = TimeSpan.FromMilliseconds(750);
_tfs_server_text_changed_timer.Start();
e.Handled = true;
}
private void _TFSServer_PostTextChanged(object sender, EventArgs e)
{
(sender as DispatcherTimer).Stop();
TextBox tb = (sender as DispatcherTimer).Tag as TextBox;
if (sender.Equals(_tfs_server_text_changed_timer))
{
_tfs_server_text_changed_timer.Tag = null;
_tfs_server_text_changed_timer = null;
}
TfsTeamProjectCollection TPC = null;
Uri tfs_server_ = null;
if (Uri.TryCreate(tb.Text, UriKind.Absolute, out tfs_server_))
{
TFS_Server = tfs_server_;
try
{
TPC = new TfsTeamProjectCollection(TFS_Server);
}
catch (Exception ex)
{
Paragraph p = new Paragraph(new Run(ex.InnerException == null ? ex.Message : ex.InnerException.Message));
p.Foreground = Brushes.Red;
_WorkItemDisplay.Document.Blocks.Add(p);
_BtnQuery.IsEnabled = false;
return;
}
}
else
TFS_Server = null;
if (TPC == null)
{
_WorkItemDisplay.AppendText(".");
_BtnQuery.IsEnabled = false;
return;
}
Cursor saved_cursor = this.Cursor;
this.Cursor = Cursors.Wait;
//!?this._To_Projects.SelectedValuePath = "Id";
this._To_Projects.DisplayMemberPath = "Name";
this._To_Projects.ItemsSource = TPC.GetService<WorkItemStore>().Projects;
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run("Connected to: " + tb.Text)));
_BtnQuery.IsEnabled = true;
this.Cursor = saved_cursor;
}
private void _To_Projects_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (_To_Projects.SelectedItem == null)
{
_To_Areas.ItemsSource = null;
_To_Iterations.ItemsSource = null;
}
else
{
Cursor saved_cursor = this.Cursor;
this.Cursor = Cursors.Wait;
//!?_To_Areas.SelectedValuePath = "Id";
_To_Areas.DisplayMemberPath = "Name";
_To_Areas.ItemsSource = (_To_Projects.SelectedItem as Project).AreaRootNodes;
//!?_To_Iterations.SelectedValuePath = "Id";
_To_Iterations.DisplayMemberPath = "Name";
_To_Iterations.ItemsSource = (_To_Projects.SelectedItem as Project).IterationRootNodes;
this.Cursor = saved_cursor;
}
}
private void _BtnQueryClick(object sender, RoutedEventArgs e)
{
StringBuilder wiquery = new StringBuilder(this._WorkItemQuery.Text);
int work_item_number = 0;
if (int.TryParse(this._WorkItemQuery.Text, out work_item_number))
{
wiquery.Clear();
wiquery.Append("SELECT * FROM WorkItems WHERE [System.Id] = '");
wiquery.Append(work_item_number.ToString());
wiquery.Append("'");
}
Cursor saved_cursor = this.Cursor;
this.Cursor = Cursors.Wait;
_WorkItemDisplay.Document.Blocks.Clear();
try
{
TfsTeamProjectCollection TPC = new TfsTeamProjectCollection(TFS_Server);
TPC.EnsureAuthenticated();
TFS_WorkItems = TPC.GetService<WorkItemStore>().Query(wiquery.ToString());
switch (TFS_WorkItems.Count)
{
case 0:
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run("No items were returned from search.")));
_From_Project.Text = string.Empty;
break;
case 1:
{
Table t = new Table();
GridLengthConverter lc = new GridLengthConverter();
t.Columns.Add(new TableColumn() { Width = (GridLength)lc.ConvertFromString("*") });
t.Columns.Add(new TableColumn() { Width = (GridLength)lc.ConvertFromString("3*") });
TableRowGroup rg = new TableRowGroup();
TableRow r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["ID"].Name))));
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["ID"].Value.ToString()))));
rg.Rows.Add(r);
r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Title"].Name))));
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Title"].Value.ToString()))));
rg.Rows.Add(r);
r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Area Path"].Name))));
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Area Path"].Value.ToString()))));
rg.Rows.Add(r);
r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Iteration Path"].Name))));
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Iteration Path"].Value.ToString()))));
rg.Rows.Add(r);
_From_Project.Text = TFS_WorkItems[0].Fields["Team Project"].Value.ToString();
foreach (Field f in TFS_WorkItems[0].Fields)
{
if (f.Value != null)
{
string value = f.Value.ToString();
if (!string.IsNullOrWhiteSpace(value))
{
r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(f.Name))));
r.Cells.Add(new TableCell(new Paragraph(new Run(value))));
rg.Rows.Add(r);
}
}
}
t.RowGroups.Add(rg);
_WorkItemDisplay.Document.Blocks.Add(t);
}
break;
default:
{
Table t = new Table();
GridLengthConverter lc = new GridLengthConverter();
t.Columns.Add(new TableColumn() { Width = (GridLength)lc.ConvertFromString("*") });
t.Columns.Add(new TableColumn() { Width = (GridLength)lc.ConvertFromString("7*") });
TableRowGroup rg = new TableRowGroup();
TableRow r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["ID"].Name)) { FontWeight = FontWeights.Bold }));
r.Cells.Add(new TableCell(new Paragraph(new Run(TFS_WorkItems[0].Fields["Title"].Name)) { FontWeight = FontWeights.Bold }));
rg.Rows.Add(r);
_From_Project.Text = TFS_WorkItems[0].Fields["Team Project"].Value.ToString();
foreach (WorkItem wi in TFS_WorkItems)
{
r = new TableRow();
r.Cells.Add(new TableCell(new Paragraph(new Run(wi.Fields["ID"].Value.ToString()))));
r.Cells.Add(new TableCell(new Paragraph(new Run(wi.Fields["Title"].Value.ToString()))));
rg.Rows.Add(r);
}
t.RowGroups.Add(rg);
_WorkItemDisplay.Document.Blocks.Add(t);
}
break;
}
}
catch (Exception ex)
{
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run(ex.InnerException == null ? ex.Message : ex.InnerException.Message)) { Foreground = Brushes.Red });
_From_Project.Text = string.Empty;
}
this.Cursor = saved_cursor;
}
private void _BtnMoveClick(object sender, RoutedEventArgs e)
{
Cursor saved_cursor = this.Cursor;
this.Cursor = Cursors.Wait;
_WorkItemDisplay.Document.Blocks.Clear();
_From_Project.Text = string.Empty;
SqlConnection conn = null;
try
{
conn = new SqlConnection(_SQLConnection.Text);
conn.Open();
if (TFS_WorkItems.Count == 0)
{
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run("Nothing to move.")) { Foreground = Brushes.Red });
}
else
{
TfsTeamProjectCollection TPC = new TfsTeamProjectCollection(TFS_Server);
TPC.EnsureAuthenticated();
WorkItemStore WIS = TPC.GetService<WorkItemStore>();
StringBuilder sql_command_are = new StringBuilder();
StringBuilder sql_command_latest = new StringBuilder();
StringBuilder sql_command_were = new StringBuilder();
foreach (WorkItem wi in TFS_WorkItems)
{
sql_command_are.Clear();
sql_command_latest.Clear();
sql_command_were.Clear();
sql_command_are.Append("UPDATE [WorkItemsAre] SET AreaID='");
sql_command_latest.Append("UPDATE [WorkItemsLatest] SET AreaID='");
sql_command_were.Append("UPDATE [WorkItemsWere] SET AreaID='");
sql_command_are.Append((_To_Areas.SelectedItem as Node).Id.ToString());
sql_command_latest.Append((_To_Areas.SelectedItem as Node).Id.ToString());
sql_command_were.Append((_To_Areas.SelectedItem as Node).Id.ToString());
sql_command_are.Append("', IterationID='");
sql_command_latest.Append("', IterationID='");
sql_command_were.Append("', IterationID='");
sql_command_are.Append((_To_Iterations.SelectedItem as Node).Id.ToString());
sql_command_latest.Append((_To_Iterations.SelectedItem as Node).Id.ToString());
sql_command_were.Append((_To_Iterations.SelectedItem as Node).Id.ToString());
sql_command_are.Append("' WHERE ID='");
sql_command_latest.Append("' WHERE ID='");
sql_command_were.Append("' WHERE ID='");
sql_command_are.Append(wi.Id.ToString());
sql_command_latest.Append(wi.Id.ToString());
sql_command_were.Append(wi.Id.ToString());
sql_command_are.Append("'");
sql_command_latest.Append("'");
sql_command_were.Append("'");
new SqlCommand(sql_command_are.ToString(), conn).ExecuteNonQuery();
new SqlCommand(sql_command_latest.ToString(), conn).ExecuteNonQuery();
new SqlCommand(sql_command_were.ToString(), conn).ExecuteNonQuery();
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run("Moved " + wi.Id.ToString() + " to " + (_To_Projects.SelectedItem as Project).Name)));
}
}
}
catch (Exception ex)
{
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run(ex.InnerException == null ? ex.Message : ex.InnerException.Message)) { Foreground = Brushes.Red });
_From_Project.Text = string.Empty;
}
finally
{
if (conn != null)
conn.Close();
}
this.Cursor = saved_cursor;
}
private void UpdateMoveEnabled(object sender, SelectionChangedEventArgs e)
{
BindingOperations.GetMultiBindingExpression(_BtnMove, Button.IsEnabledProperty).UpdateTarget();
}
private void _BtnSQLTestClick(object sender, RoutedEventArgs e)
{
Cursor saved_cursor = this.Cursor;
this.Cursor = Cursors.Wait;
_WorkItemDisplay.Document.Blocks.Clear();
try
{
SqlConnection conn = new SqlConnection(_SQLConnection.Text);
conn.Open();
SqlCommand sql_cmd = new SqlCommand("SELECT COUNT(*) FROM [WorkItemsAre]", conn);
int wi_count = (int)sql_cmd.ExecuteScalar();
conn.Close();
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run("Success! " + wi_count.ToString() + " work items counted.")));
}
catch (Exception ex)
{
_WorkItemDisplay.Document.Blocks.Add(new Paragraph(new Run(ex.InnerException == null ? ex.Message : ex.InnerException.Message)) { Foreground = Brushes.Red });
}
this.Cursor = saved_cursor;
}
}
public class AndConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parm, System.Globalization.CultureInfo culture)
{
switch (targetType.Name)
{
case "Boolean":
case "Nullable`1":
{
for (int i = 0; i < values.Count(); i++)
{
if (values[i] == null)
return false;
switch (values[i].GetType().Name)
{
case "Boolean":
case "Nullable`1":
if (values[i] as bool? ?? false)
continue;
return false;
case "String":
case "string":
if (string.IsNullOrWhiteSpace(values[i] as string))
return false;
else if ("0".CompareTo(values[i] as string) == 0 || "false".CompareTo((values[i] as string).ToLower()) == 0)
return false;
break;
case "Node":
if ((values[i] as Node).Id > 0)
continue;
return false;
default:
throw new NotImplementedException("Cannot process input type " + values[i].GetType().Name);
}
}
return true;
}
default:
throw new NotImplementedException("Cannot process output type " + targetType.Name);
}
}
public object[] ConvertBack(object value, Type[] targetTypes, object parm, System.Globalization.CultureInfo culture)
{
object[] ret = new object[targetTypes.Count()];
for (int i = 0; i < targetTypes.Count(); i++)
ret[i] = System.Convert.ChangeType(value, targetTypes[i]);
return ret;
}
}
}
你可以在Silverlight中使用XAML
关于silverlight的stackoverflow问题:https://stackoverflow.com/search?q=siverlight
结构与WPF相同,但有些特性与WPF不同
如果你想运行本地WPF应用程序,你需要考虑像Glen说的那样创建一个XBAP应用程序。请注意,现代浏览器中对XBAP应用程序的支持很少,而且可能有限。
如果你想在你的ASP中使用XAML控件/文件。. NET网站,您需要首先编写一个Silverlight应用程序,然后将控件添加到您的网站。请注意,有些浏览器甚至停止了对Silverlight应用程序的支持
参考资料
在web应用程序中使用XAML的最佳方法是使用Silverlight。在这一点上,使用Silverlight对任何项目来说都不是一个好主意。
对Silverlight的扩展支持将于2021年10月12日结束,这使得Silverlight似乎应该存在一段时间,对吗?错了。为了在网络上运行Silverlight应用程序,你需要一个支持它的浏览器。9月以后Chrome将不再支持Silverlight。如果用户想要运行Silverlight插件,Firefox就会让他们陷入困境。在Windows 10下,用户必须运行IE11, Edge无法运行Silverlight应用。
web上的XAML已死