-1

我有一个数据网格,我想在数据网格上方的一些文本框中显示当前选定行的一些详细信息。我正在使用 Telerik 的网格并且有 SelectionUnit=Mixed 和 SelectionMode=Extended。因此 SelectedItem 和 SelectedItems 始终为空。我的工作解决方案是我创建了一个附加属性,如果仅选择一行中的单元格,则提供该行的值;如果选择了多个值中的单元格,则提供虚拟值。

网格的那部分定义为:

<telerik:RadGridView b:myBehavior.CurrentRow="{Binding Path=Data.SelectedRow, Source={StaticResource DataContextProxy}}" Name="myGridView" ...>

并且在文本框中使用以下代码引用了这些值:

<TextBox Text="{Binding Path=(b:myBehavior.CurrentRow).TextValue, ElementName=myGridView}" />

正如你所看到的,我必须在我的 viewModel 中创建一个绑定做一个属性。有没有办法在不使用视图模型的情况下初始化附加属性?通过提供虚拟记录还是 NULL?

如果我set b:myBehavior.CurrentRow=""得到一个异常(无效值)。我需要在这里做什么才能让它运行?

4

1 回答 1

0

感谢@Clemens 为我指明了正确的方向。我避免不必要地往返视图模型的解决方案是在 Usercontrols 资源中创建一个对象

<repositories:FahrzeugFlatRecord x:Key="myObj" />

然后像这样绑定它:

<telerik:RadGridView b:myBehavior.CurrentRow="{Binding Source={StaticResource myObj}}"...>

文本框保持不变。这个解决方案是必要的,因为我的行为中有一个注册 EventListener 的 PropertyChangedCallback。如果不是这种情况,调用绑定该行为就足够了:

<telerik:RadGridView b:myBehavior.CurrentRow="{x:Null}"...>
于 2019-08-07T04:41:51.403 回答