我正在尝试设置几个切换按钮的 DataContext,每个切换按钮都对应于列表的特定元素。这些切换按钮是静态的,不是动态生成的,因为我们想在布局中对它们进行分组,而不是将它们全部放在一个区域中。
ListOfRoles
是对象的集合,每个对象都有一个IsSelected
属性(类型bool?
)和一个名称。转换器返回具有nameToObject
转换器中给定名称的对象。
我的问题是 XAMLIsSelected
在评估 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>
我在转换器中放置了断点,并在尝试评估绑定之前验证它不会进入转换器。IsSelected
如果我删除IsSelected
绑定,我可以在转换器中捕获执行,所以这似乎是评估顺序的问题,除非我遗漏了有关 XAML 的某些内容。
我尝试过更改 XAML 中属性的顺序,尝试使用指定绑定(嵌套标签)的长格式,但我只是没有想法。
提前致谢。