Конвертировать CheckBoxField в ToggleButton в области инфраструктуры XamDataGrid
Я борюсь с отображением CheckBoxField в Infragistics XamDataGrid в качестве переключателя. Кажется, все работает нормально, пока я не нажму те кнопки переключения - это не обновляет соответствующее значение в viewmodel. С другой стороны, когда я изменяю значение привязки в другом месте системы, ChecBoxField обновляется. Если у кого-то есть идея, как это сделать правильно, это сделает меня счастливым.
Мой код:
[...]
<UserControl.Resources>
<ResourceDictionary>
[...]
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igWpf:CellValuePresenter}">
<ToggleButton Content="{TemplateBinding Value, Converter={StaticResource Converter}}" IsChecked="{TemplateBinding Value}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</UserControl.Resources>
[...]
<igWpf:XamDataGrid DataSource="{Binding Oscillators}" AutoFit="true" Grid.Column="1" HorizontalAlignment="Left"
GroupByAreaLocation="None"
IsNestedDataDisplayEnabled="False"
cal:Message.Attach="[Event AssigningFieldLayoutToItem] = [Action AssignFieldLayout($source)] ">
<igWpf:XamDataGrid.FieldLayouts>
<igWpf:FieldLayout>
<igWpf:FieldLayout.Fields>
<igWpf:TextField IsReadOnly="True" Name="Name"></igWpf:TextField>
<igWpf:CheckBoxField Name="OnOff" Label="On/Off">
<igWpf:Field.Settings>
<igWpf:FieldSettings CellValuePresenterStyle="{StaticResource ToggleButtonCellStyle}"></igWpf:FieldSettings>
</igWpf:Field.Settings>
</igWpf:CheckBoxField>
[...]
</igWpf:NumericField>
</igWpf:FieldLayout.Fields>
</igWpf:FieldLayout>
</igWpf:XamDataGrid.FieldLayouts>
[...]
</igWpf:XamDataGrid>
1 ответ
Решение
Ладно, я понял. Это правильное связывание, работающее в обоих направлениях:
<Setter.Value>
<ControlTemplate TargetType="{x:Type igWpf:CellValuePresenter}">
<ToggleButton Content="{TemplateBinding Value, Converter={StaticResource Converter}}" IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}"/>
</ControlTemplate>
</Setter.Value>