想象一下你有一個用戶選擇列表。根據用戶的選擇,其他選擇可能不再可用。WPF ValueConverter Binding - 出錯了
我有一個ValueConverter可以處理這個問題。如果它知道進行了哪些選擇,它將返回一個值,指示正在轉換的項目是否仍然可以選擇。
問題是,唯一知道用戶選擇內容的地方是在此屏幕的ViewModel中。沒問題,我雖然。我將使轉換器成爲ViewModel的一個屬性,並且在轉換器的構造函數中,我將傳遞對ViewModel的引用,以便轉換器可以隨時檢查所選項目的列表。
我現在面臨的問題是,它似乎並未實際執行任何轉換。
煮沸: 該ViewModel有一個名爲MySelectionConverter類型IValueConverter的屬性。 ViewModel有一個選定項目的列表。 在視圖中(從UserControl繼承的MyScreen類型),有一個包含項目的列表框。
ItemTemplate中看起來是這樣的:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="Auto" Width="100" VerticalAlignment="Top" Visibility="{Binding Path=DataContext.MySelectionConverter, RelativeSource={RelativeSource AncestorType={x:Type MyScreen}}}">
<TextBlock Text="The user might want to select me." />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
我懷疑的東西是錯誤與我結合。但是,也許你根本無法做到這一點。任何幫助表示讚賞。
編輯: 根據我迄今獲得的信息,我的綁定是不正確的。但事實證明,我不能做我想做的事情。從本質上講,我試圖通過設置轉換器使用綁定:
Visibility="{Binding Converter={Binding Path=DataContext.StyleOptionConverter, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:StyleSelectionScreen}}}}
Visual Studio中告訴我:
A「綁定」不能在 類型的 「轉換器」屬性設置'捆綁'。 「綁定」只能在DependencyObject的DependencyProperty上設置爲 。
所以,現在我想這個問題就變成了:用什麼方式,我可以解決這個問題?我需要一個轉換器,瞭解將用於其屏幕的ViewModel的狀態。