我想设置几个切换按钮的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