【发布时间】:2013-08-26 18:52:11
【问题描述】:
我正在使用 WPF、MVVM 和 DevExpress GridControl。我的 MainWindow.xaml 中有两个面板。 Panle1 有 Grid,Panel2 有 Textbox。我希望如果我从 Panel1 的网格中选择一个项目,它的名称应该显示在该 Panle2 文本框中。我写了代码,但它不起作用。你能帮我解决这个问题吗?
*在 Models 文件夹中的 NameModel 中我写道:*
private NameModelClass _selectedCustomer;
public NameModelClass SelectedCustomer
{
get { return _selectedCustomer; }
set
{
if (_selectedCustomer != value)
{
_selectedCustomer = value;
LastName = value.LastName;
OnPropertyChanged("SelectedCustomer");
}
}
public List<Namess> ListPerson { get; set; }
void CreateList()
{
ListPerson = new List<Namess>();
for (int i = 0; i < 10; i++)
{
ListPerson.Add(new Namess(i));
}
}
public class Namess
{
public Namess(int i)
{
FirstName = "FirstName" + i;
LastName = "LastName" + i;
Age = i * 10;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
}
我在 MianWindow.xaml 中写道:
<dxdo:LayoutPanel Caption="Grid" Caption="Panel1" x:Name="abc1">
<Grid>
<dxg:GridControl x:Name="grid" Height="233" ItemsSource="{Binding ListPerson}" AutoGenerateColumns="AddNew" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedItem="{Binding SelectedNames}">
<dxg:GridControl.View>
<dxg:TableView ShowTotalSummary="True"/>
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
</dxdo:LayoutPanel>
<dxdo:LayoutPanel Caption="Panel2" x:Name="abc1">
<TextBox Width="166" Background="White" Height="33" HorizontalAlignment="Right" VerticalAlignment="Bottom" Text="{Binding Path=LastName}"/>
</dxdo:LayoutPanel>
我是 MVVM 和 c# 的新手。如果您不清楚我的问题,请问我。谢谢。
【问题讨论】:
-
您遇到的具体问题是什么?您的代码有几处问题,其中之一是您的绑定属性没有调用
OnPropertyChanged(FirstName和LastName)。ListPerson也应该是ObservableCollection而不是常规列表。检查您的输出窗口是否有任何绑定错误。 -
@PoweredByOrange 我想在 Panel2 的文本框中显示从网格中选择的项目
标签: c# .net wpf data-binding mvvm