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

我有一个数据网格,我想在数据网格上方的一些文本框中显示当前所选行的一些详细信息。我正在使用 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=""得到异常(无效值)。我需要在这里做什么才能让它运行?


繁星淼淼
浏览 90回答 1
1回答

拉丁的传说

我避免不必要的视图模型往返的解决方案是在用户控件资源中创建一个对象<repositories:FahrzeugFlatRecord&nbsp;x:Key="myObj"&nbsp;/>然后像这样绑定它:<telerik:RadGridView&nbsp;b:myBehavior.CurrentRow="{Binding&nbsp;Source={StaticResource&nbsp;myObj}}"...>文本框保持不变。这个解决方案是必要的,因为我的行为中有一个注册 EventListener 的 PropertyChangedCallback。如果不是这种情况,调用绑定该行为就足够了:<telerik:RadGridView&nbsp;b:myBehavior.CurrentRow="{x:Null}"...>
打开App,查看更多内容
随时随地看视频慕课网APP