我想設置幾個切換按鈕的DataContext,每個切換按鈕將對應於列表的特定元素。這些切換按鈕是靜態的,不是動態生成的,因爲我們想將它們分組在佈局中,而不是將它們全部放在一個區域中。屬性綁定後評估的DataContext綁定 - 導致崩潰
ListOfRoles
是一個對象集合,每個對象都有一個IsSelected
屬性(類型bool?
)和一個名稱。 nameToObject
轉換器以轉換器中給出的名稱返回對象。
我的問題是XAML試圖綁定IsSelected
之前,它已經評估DataContext綁定,這會引發我們的系統上的異常。它試圖綁定到應用RoleContainerStyle
的對象,並崩潰。這裏是XAML:
<Style x:Key="RoleContainerStyle" TargetType="{x:Type MyControls:MyListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MyControls:MyListBoxItem}">
<Grid>
<StackPanel Orientation="Horizontal" >
<ToggleButton Content="Driver To Scene" IsChecked="{Binding IsSelected}" DataContext="{Binding ListOfRoles, Converter={StaticResource nameToObject}, ConverterParameter='Driver To'}" HorizontalAlignment="Stretch" Margin="0" Width="80" Height="40" FontSize="14.667" />
<ToggleButton Content="Driver From Scene" IsChecked="{Binding IsSelected}" DataContext="{Binding ListOfRoles, Converter={StaticResource nameToObject}, ConverterParameter='Driver From'}" HorizontalAlignment="Stretch" Margin="8,0,0,0" Width="80" Height="40" FontSize="14.667" />
</StackPanel>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我把斷點的轉換器和驗證,它DOES NOT試圖評估IsSelected
結合之前輸入的轉換器。
如果我刪除IsSelected
綁定,我AM能夠在轉換器內執行的陷阱,因此它似乎與評估的訂單出現問題,除非我失去了一些東西約XAML。
我試着改變XAML中屬性的順序,嘗試使用指定綁定(嵌套標籤)的長形式,而我只是出於想法。
在此先感謝。
我們最終做的是實現[]索引器與名稱的字符串,並重構xaml使用它。該列表包含兩個以上的項目,我們不控制數字索引(NHibernate的b/c)。 – dythim