我使用Frame在主窗口中显示一个页面。现在在该特定页面中,我将以编程方式设置datagrid。此数据网格包含超链接。现在每次我点击那个超链接我都会得到"找不到资源"错误。我的页面名为page1.xaml,位于文件夹" Pages"中。并且"编辑/查看"是特定超链接的文本。我该如何解决这个问题?我希望在"编辑/查看"时从页面调用一些操作。单击超链接。提前谢谢。
这是我的mainwindow.xaml中的代码
//Displaying the Page1.xaml from frame in MainWindow
<Frame Source="/Pages/Page1.xaml"/>
Page1.xaml中的Datagrid代码
<DataGrid Height="479" AutoGenerateColumns="False" Grid.Column="2" Grid.Row="2" Margin="12,55,24,148" RowHeaderWidth="0" FontSize="12" Name="dgList" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserSortColumns="False" BorderBrush="#FFbab3b3" Background="White" Foreground="#FF565754" AlternatingRowBackground="#fffff5f6" HorizontalGridLinesBrush="#FFF8F8F8" VerticalGridLinesBrush="#FFbab3b3" IsReadOnly="True" SelectionChanged="dgList_SelectionChanged" />
这就是我在Page1.xaml.cs
中设置datagrid的方法public void SetupdgListDataGrid()
{
var col1 = new DataGridTextColumn();
col1.Header = "Name";
col1.Binding = new Binding("[0]");
dgList.Columns.Add(col1);
col1 = new DataGridTextColumn();
col1.Header = "Age";
col1.Binding = new Binding("[1]");
dgList.Columns.Add(col1);
try
{
var style1 = new Style(typeof(TextBlock));
style1.Setters.Add(new EventSetter(Hyperlink.ClickEvent, (RoutedEventHandler)Event_ViewAction));
var columnView = new DataGridHyperlinkColumn { Header = " ", Binding = new Binding("ViewUserLink"), ElementStyle = style1 };
columnView.Binding = new Binding("[2]");
dgList.Columns.Add(columnView);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
this.dgList.ItemsSource = SomeDataSourceObject;
}
public void Event_ViewAction(object sender, RoutedEventArgs e)
{
MessageBox.Show("Edit clicked");
}
现在我对SomeDataSourceObject的定义如下
List<object> SomeDataSourceObject = new List<object>();
并填写如下数据。
string[] tempValues = new string[3];
tempValues[0] = "FirstName";
tempValues[1] = "20";
tempValues[2] = "Edit/View";
SomeDataSourceObject.Add(tempValues);
答案 0 :(得分:1)
您点击了文字&#34;编辑/查看&#34;这是一个没有任何东西链接的字符串。如果您提供了正确的资源(例如网址),您将被导航到它。
您还可以使用NavigationService明确停止加载内容:
public void Event_ViewAction(object sender, RoutedEventArgs e)
{
MessageBox.Show("Edit clicked");
this.NavigationService.StopLoading();
}
但是,如果它应该像按钮一样工作,我建议添加一个经典按钮并按照我在评论中写的样式。