为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 WPF/XAML 中附加属性并将 NULL 作为初始值

如何在 WPF/XAML 中附加属性并将 NULL 作为初始值

C#
繁星淼淼 2023-08-13 14:05:22
我有一个数据网格,我想在数据网格上方的一些文本框中显示当前所选行的一些详细信息。我正在使用 Telerik 的网格,并且 SelectionUnit=Mixed 和 SelectionMode=Extended。因此 SelectedItem 和 SelectedItems 始终为 null。我的工作解决方案是,我创建了一个附加属性,如果仅选择一行中的单元格,则该属性提供该行的值;如果选择多个值中的单元格,则提供虚拟值。网格的该部分定义为:<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=""得到异常(无效值)。我需要在这里做什么才能让它运行?
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我避免不必要的视图模型往返的解决方案是在用户控件资源中创建一个对象

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

然后像这样绑定它:

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

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

<telerik:RadGridView b:myBehavior.CurrentRow="{x:Null}"...>


查看完整回答
反对 回复 2023-08-13
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信