簡體   English   中英

如何在 WPF/XAML 中以 NULL 作為初始值附加屬性

[英]How to attach a property in WPF/XAML with NULL as initial value

我有一個數據網格,我想在數據網格上方的一些文本框中顯示當前選定行的一些詳細信息。 我正在使用 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=""我得到一個異常(無效值)。 我需要在這里做什么才能讓它運行?

感謝@Clemens 為我指明了正確的方向。 我避免不必要的視圖模型往返的解決方案是在 Usercontrols 資源中創建一個對象

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

然后像這樣綁定它:

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

文本框保持不變。 這個解決方案是必要的,因為我的行為中有一個 PropertyChangedCallback,它注冊了一個 EventListener。 如果不是這種情況,調用綁定該行為就足夠了:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM