当选择列表视图项目时填充文本框
我有场景。在我看来,我有2个文本框说名称,地址分别绑定viewModels proeperty名称,地址。和一个按钮,将文本框值添加到列表视图。 我的问题是我要当列表视图中的项目选择如何做到这一点来填充文本框(我在正常的WPF的一个应用selection_changed事件这样做,但在这里我使用MVVM模式的新的给我)当选择列表视图项目时填充文本框
编辑
笔者认为:
<TextBox Height="23"
HorizontalAlignment="Stretch"
Margin="0,6,0,0"
Name="txtbxAddress"
Text="{Binding Path=Name}"
VerticalAlignment="Top"
Grid.Column="1"
Grid.Row="1" />
<TextBox Height="23"
HorizontalAlignment="Stretch"
Margin="0,6,0,0"
Name="txtbxAddress"
Text="{Binding Path=Address}"
VerticalAlignment="Top"
Grid.Column="1"
Grid.Row="1" />
<ListView ItemsSource="{Binding Path=ManufactureRecords}"
SelectedItem="{Binding Path=SelectedManufacture}"
Margin="7"
Name="lstvw_Manufature_Master"
>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Manufacture_Name}"
Header="Manufacture Name"
Width="338" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Address}"
Header="Address"
Width="0" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Location}"
Header="Location"
Width="200" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Phone_No}"
Header="Phone_No"
Width="120" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Is_Active}"
Header="Is_Active"
Width="0" />
</GridView>
</ListView.View>
</ListView>
这里是我的ViewModel
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
RaisePropertyChanged("Name");
}
}
private string _address;
public string Address
{
get { return _address; }
set
{
_address = value;
RaisePropertyChanged("Address");
}
}
private ObservableCollection<Tbl_Manufacture_Master> _manufactureRecords;
public ObservableCollection<Tbl_Manufacture_Master> ManufactureRecords
{
get { return _manufactureRecords; }
set
{
_manufactureRecords = value;
RaisePropertyChanged("ManufactureRecords");
}
}
private Tbl_Manufacture_Master _selectedManufacture;
public Tbl_Manufacture_Master SelectedManufacture
{
get { return _selectedManufacture; }
set
{
_selectedManufacture = value;
RaisePropertyChanged("SelectedManufacture");
}
}
从注释,链接的例子去哟你需要命名你的ListView(即x:Name="listView"
)和具体该名称的结合,与SelectedItem
属性一起:
<TextBox Height="23"
HorizontalAlignment="Stretch"
Margin="0,6,0,0"
Name="txtbxAddress"
Text="{Binding Path=SelectedItem.Name, ElementName=listView}"
VerticalAlignment="Top"
Grid.Column="1"
Grid.Row="1" />
<TextBox Height="23"
HorizontalAlignment="Stretch"
Margin="0,6,0,0"
Name="txtbxAddress"
Text="{Binding Path=SelectedItem.Address, ElementName=listView}"
VerticalAlignment="Top"
Grid.Column="1"
Grid.Row="1" />
<ListView ItemsSource="{Binding Path=ManufactureRecords}"
SelectedItem="{Binding Path=SelectedManufacture}"
Margin="7"
x:Name="listView"
Name="lstvw_Manufature_Master">
...
</ListView>
的[?如何绑定一个ListView的SelectedItem使用双向模式,一个文本框(
,所以这很好。但是当我想将TextBox值保存到数据库表时,会发生什么这个我绑定TextBox字段到我的视图模型上的属性保存命令我选择的值为this.Na我,this.Address并插入到数据库 – Mussammil
我不知道你在问什么。你的意思是你什么时候提交数据库,你怎么知道发生了什么变化?我会说这是一个单独的问题,但通常你可以为每个对象保留一个标志,说明是否有改变,这是在你的属性设置器中设置的,然后当一个保存命令被执行时,你用一个对象列表这个标志。 – Matt
这工作正常。当选择列表视图时填充文本框,因为我绑定我的文本框的TextProperty像'文本=“{绑定路径= SelectedItem.Name,ElementName = listView}”。但我怎么得到我的ViewModel的命令中的文本框的值属性(saveCommand)。我想我没有得到我的viewModel中的文本框的值,因为我没有将它绑定到任何ViewModel属性,而是我使用了Element绑定。 – Mussammil
可能重复http://stackoverflow.com/questions/4529242/how-do-i-bind-a-listview-selecteditem-to-a-textbox-using-the-twoway-mode) – Matt
@tencntraze,但我已经将我的TextBox.Text属性绑定到ViewModels属性使用Icommand保存,然后如何绑定文本= {Binding ElementName = listview1,Path = SelectedItem.ManufactureName}请参阅我的编辑 – Mussammil