Я получаю это предупреждение в окне вывода Visual Studio при привязке к свойству SolidColorBrush внутри DataTemplate:
Ошибка System.Windows.Data: 2: Не удается найти управляющий элемент FrameworkElement или FrameworkContentElement для целевого элемента. BindingExpression: Path = MyColor; DataItem = NULL; целевой элемент - "SolidColorBrush" (HashCode = 22943289); target является "Цвет" (тип "Цвет" )
Если я привязываю непосредственно к элементу прямоугольника, вне DataTemplate, все работает хорошо.
Может ли кто-нибудь объяснить, почему это различие в двух, по-видимому, подобных применениях из приведенного ниже примера кода:
Мой вид:
<UserControl.Resources>
<vm:TestViewModel x:Key="_myTestVM"/>
<DataTemplate x:Key="testVMDataTemplate">
<Grid>
<Rectangle Height="30" Width="200" Margin="5">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Path=MyColor}" />
</Rectangle.Fill>
</Rectangle>
</Grid>
</DataTemplate>
</UserControl.Resources>
<Grid>
<StackPanel DataContext="{StaticResource _myTestVM}">
<!-- Binding *outside* the DataTemplate = works fine -->
<Rectangle Height="30" Width="200" Margin="5">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Path=MyColor}"/>
</Rectangle.Fill>
</Rectangle>
<!-- Binding *inside* the DataTemplate = output warning -->
<ContentControl Content="{Binding}" ContentTemplate="{StaticResource testVMDataTemplate}"/>
</StackPanel>
</Grid>
My ViewModel (TestViewModel):
public class TestViewModel {
private Color _color = Colors.Green;
public Color MyColor {
get { return _color; }
}
public TestViewModel() {
}
}
Обновление:
Очевидно, это связано с привязкой свойства Color для SolidColorBrush. То же самое происходит, если я привязываю свойство Angle к объекту RotateTransform.
Спасибо заранее.