Этот уже давно меня беспокоит, и я не могу заставить его работать. Я использую шаблон данных для форматирования элементов в элементе управления ListBox, например:
<ListBox HorizontalAlignment="Stretch" Name="listBox1" VerticalAlignment="Stretch" Grid.ColumnSpan="3" Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30" />
<ColumnDefinition Width="30" />
<ColumnDefinition Width="100*" />
</Grid.ColumnDefinitions>
<Rectangle Width="30" Height="10" Grid.Column="0"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Fill="{Binding Path=Color,
Converter={StaticResource SolidColorBrushConverter},
Mode=OneWay}" />
<CheckBox Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
IsChecked="{Binding Path=Selected}" />
<Label Grid.Column="2" VerticalAlignment="Center"
Content="{Binding Path=Name}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Проблема в том, что прямоугольник не отображается с привязанным цветом, как это должно быть. Следуя конвертеру, кажется, что привязка правильно получает цвет от привязанного элемента (остальные привязки на флажке и метке работают, как и ожидалось). Также я не получаю ошибок привязки в выводе отладки.
Я также попытался обернуть прямоугольник в элементе <border>
с черной рамкой, которая отображается правильно, поэтому я знаю, что прямоугольник, по крайней мере, появляется, однако заменил атрибут BorderBrush
такой же привязкой из прямоугольника * Атрибут 1008 *, как показано выше, приводит к исчезновению границы (опять же, без ошибок привязки).
Как правильно добиться привязки цвета в WPF?