我有一个工作超链接如下:
XAML:
<TextBlock >
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName}" />
</Hyperlink>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
构造函数:
navHomeViewCommand = new DelegateCommand(NavHomeView);
Run Code Online (Sandbox Code Playgroud)
命令:
private readonly ICommand navHomeViewCommand;
public ICommand NavHomeViewCommand
{
get
{ return navHomeViewCommand; }
}
private void NavHomeView()
{
int val;
val = PersonSelected.PersonKnownID);
var parameters = new NavigationParameters();
parameters.Add("To", val);
_regionManager.RequestNavigate("MainRegion", new Uri("HomeView", UriKind.Relative), parameters);
}
Run Code Online (Sandbox Code Playgroud)
如果我想有多个超链接,如...
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName}" />
</Hyperlink>
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName2}" />
</Hyperlink>
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run …Run Code Online (Sandbox Code Playgroud) 我的第一篇文章在这里!和新的编码!...
我在页面上的框架中有一个 WPF Datagrid。我想单击(最好单击)一行并使用存储在其中一列中的 ID 值导航到(打开)一个新页面。
使用 MouseDoubleClick 有时我可以双击行来打开一个页面。但有时它会抛出:“program.exe 中发生类型为‘System.NullReferenceException’的未处理异常附加信息:未将对象引用设置为对象的实例。”
在线(有关完整方法,请参阅下面的代码):
string ID = ((DataRowView)PersonDataGrid.SelectedItem).Row["PersonID"].ToString();
Run Code Online (Sandbox Code Playgroud)
XAML:
<DataGrid x:Name="PersonDataGrid" AutoGenerateColumns="False"
SelectionMode="Single" SelectionUnit ="FullRow"
MouseDoubleClick="PersonDataGrid_CellClicked" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=PersonID}"
ClipboardContentBinding="{x:Null}" Header="ID" />
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource myDataGridCellStyle}">
<EventSetter Event="DataGridCell.MouseLeftButtonDown" Handler="PersonDataGrid_CellClicked"/>
</Style>
</DataGrid.CellStyle>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
背后的代码:
private void PersonDataGrid_CellClicked(object sender, MouseButtonEventArgs e)
{
string ID = ((DataRowView)PersonDataGrid.SelectedItem).Row["PersonID"].ToString();
SelectedPersonID = Int32.Parse(ID);
this.NavigationService.Navigate(new PersonProfile());
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来打开 PersonProfile 页面?有没有一种简单的方法可以通过单击一行来打开页面?
谢谢。
我正在将数据读入人员类,然后将人员类存储到集合中.
ObservableCollection<Personnel> Personnels = new ObservableCollection<Personnel>();
Personnel personnel = new Personnel();
Run Code Online (Sandbox Code Playgroud)
...代码省略...
while (myReader.Read())
{
personnel.PersonID = myReader.GetInt32(0);
personnel.PersonNameID = myReader.GetInt32(1);
personnel.PersonWage = myReader.GetInt32(2);
personnel.PersonWages = String.Format("{0:N0}", personnel.PersonWage);
// more personnel. items...
Personnels.Add(personnel); }
Run Code Online (Sandbox Code Playgroud)
我的问题是Personnels集合完全填写了只读入最后一份人事记录的人事记录.在Personnels集合中说出100个人员类记录但是所有人都有相同的数据,最后一个人员类的记录.
为什么Personnels集合没有填充每个不同的人员类,因为它在循环中被读取?