Я получаю это предупреждение в окне вывода Visual Studio при связывании со свойством SolidColorBrush внутри DataTemplate :
System.Windows.Data Ошибка: 2: не удается найти управляющий FrameworkElement или FrameworkContentElement для целевого элемента. BindingExpression: Path = MyColor; DataItem = NULL; целевым элементом является SolidColorBrush (HashCode = 22943289); Целевым свойством является «Цвет» (тип «Цвет»)
Если я связываюсь непосредственно с элементом прямоугольника, вне DataTemplate , все работает хорошо.
Может ли кто-нибудь объяснить, почему эта разница в двух, по-видимому, сходных использованиях из приведенного ниже примера кода:
My View:
<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>
Моя ViewModel (TestViewModel):
public class TestViewModel {
private Color _color = Colors.Green;
public Color MyColor {
get { return _color; }
}
public TestViewModel() {
}
}
Обновление:
Очевидно, это связано с привязкой свойства Color для SolidColorBrush . То же самое происходит, если я связываю свойство Angle для объекта RotateTransform .
Заранее спасибо.