我在使用XAML时遇到了麻烦 . 我想给我的文本框一个绑定到我的datagridview . 这是我到目前为止所写的:
<TextBox x:Name="txtMaMH"
HorizontalAlignment="Left"
Height="23"
Margin="178,78,0,0"
TextWrapping="Wrap"
Text="{binding SelectedItem.MAMH, ElementName=dgvMH}"
VerticalAlignment="Top"
Width="120"/>
但我收到两个错误:
Windows Presentation Foundation(WPF)项目不支持>绑定 . 找不到类型'绑定' . 验证您是否缺少程序集引用,并且已构建所有引用的程序集 .
如何解决这个问题?请帮帮我,谢谢
还有一件事 . 我有一个Datagridview(dgvMH)有2列MAMON,TENMON . 每当我点击那个dgvMH中的一行时,我想填充我的文本框txtMaMon,txtTenMon . 这是真正的XAML代码吗?如果我错了,请纠正我,谢谢
<TextBox x:name = "txtMaMon" Text="{Binding SelectedItem.MAMON, ElementName=dgvMH}"/>
<TextBox x:name = "txtTenMon" Text="{Binding SelectedItem.TENMON, ElementName=dgvMH}"/>
<DataGrid x:Name="dgvMH" />
1 回答
我可以立即看到两个问题 .
当它说"binding"在WPF项目中不支持时,它指的是您在XAML中使用的单词,试图绑定您的Text属性 . 这是一个错字 - 它应该是
{Binding ... }
,而不是{binding ... }
其次,关于MAMON和TENMON,你的SelectedItem(可能是一个DataGridCell或类似的东西 - 当你说“DataGridView”时这是一个错字,对吗?)没有基于你的列的属性,即使它有,所以选定的单元格不会知道除了它之外的任何列 . 只能在项目后添加.ColumnName来访问列 . (这可能是我在这里误解了一些东西 - 你的变量名不能与我沟通太多 . )
如果您询问如何使用当前选定的项填充TextBox,则应该只绑定到SelectedItem属性 . 以下是如何使用小型测试ViewModel执行此操作的示例:
这是DataGrid XAML:
这是TestViewModel和TestModel:
TestViewModel的Items属性提供DataGrid中项目的源 . 选择其中一个时,DataGrid的SelectedItem属性中的更改将被推送到TestViewModel中的属性 . 如果需要,您也可以将TextBox的内容绑定到SelectedItem,并创建一个转换器以在模型和所需的字符串表示之间移动 . 或者,更简单一点,你可以有一个单独的属性(例如SelectedItemToText),它接受SelectedItem并在ViewModel中以某种方式将其字符串化,尽管这是MVVM模式的更多 .