努力学习MVVM在WPF这里...Selected属性MVVM
我使用EF4.0并已成功绑定一个DataGrid
到这是从一个简单的LINQ
查询填充的ObservableCollection
。
我现在想要将文本框绑定到网格视图中的选定属性。例如,我想让我的txtName Textbox
反映DataGrid
中选定的Name属性。我已经下降到一个列在我DataGrid
把事情简单化这是我到目前为止有:
XAML:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding AssetTransList}" SelectedItem="{Binding SelectedTransaction}" Height="177" Name="dataGrid1" Width="869" VerticalAlignment="Bottom">
<DataGrid.Columns>
<DataGridTextColumn Header="Block Name" Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
<Grid DataContext="SelectedTransaction">
<TextBox Height="23" Name="txtBlockName" Width="120" Margin="61,8,671,55">
<TextBox.Text>
<Binding Path="Block_name" UpdateSourceTrigger="Explicit">
</Binding>
</TextBox.Text>
</TextBox>
<Label Content="Block Name" Name="label1" Margin="6,6,771,48" Target="{Binding}" />
</Grid>
视图模型:
private tbAssetTransaction _selectedTransaction;
public tbAssetTransaction SelectedTransaction
{
get { return _selectedTransaction; }
set
{
if (_selectedTransaction != value)
{
_selectedTransaction = value;
OnPropertyChanged("SelectedTransaction");
}
}
}
视图模型工具来自基类的INotifyPropertyChanged
。在我的视图模型构造我不知道如何提取所选择的数据...
构造:
class AssetTransactionViewModel : NotifyPropertyBase
{
public ObservableCollection<tbAssetTransaction> SelectedAssetTransactions { get; set; }
public AssetTransactionViewModel()
{
GetAssetTransactions();
SelectedAssetTransactions = new ObservableCollection<tbAssetTransaction>();
SelectedTransaction = SelectedAssetTransactions[0];
}
问题是我的SelectedTransaction属性从未设置。 getter返回null,然后set方法永远不会运行,因此我的textbox值从不设置。我有一年的编程经验,所以这对我来说有点“深入人心”。由于
你的TextBox在哪里? – Nitin
你有什么问题?目前尚不清楚。 –
哎呦,编辑XAML的问题。 – Hardgraf