Почему в WPF свойство Rectangle.Fill не работает при использовании TemplateBinding? - PullRequest
1 голос
/ 23 марта 2009

Я не могу понять, почему этот код XAML не работает. При использовании TemplateBinding (см. Ниже), цвет фона устанавливается , а не . Но когда я использую обычную цветовую строку (то есть «красный»), она работает нормально.

<ControlTemplate x:Key="InstanceButtonTemplate" TargetType="{x:Type Control}">
    <Grid>
        <Rectangle>
            <Rectangle.Fill>
                <SolidColorBrush Color="{TemplateBinding Background}"></SolidColorBrush>
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
</ControlTemplate>

Тем не менее, когда я использую TemplateBinding таким образом, он работает отлично ...

<ControlTemplate x:Key="InstanceButtonTemplate" TargetType="{x:Type Control}">
    <Grid>
        <Rectangle Fill="{TemplateBinding Background}"></Rectangle>
    </Grid>
</ControlTemplate>

Есть идеи?

Редактировать: , чтобы уточнить, я собираюсь расширить это, чтобы использовать кисть градиента, поэтому мне нужно иметь возможность назначать свойство Rectangle.Fill, используя вместо этого XAML простой строки.

1 Ответ

5 голосов
/ 23 марта 2009

Это потому, что цвет имеет другой тип, чем фон

Фон - это Кисть, Цвет - это ... хороший цвет .. Вы можете использовать IValueConverter, чтобы преобразовать вашу кисть в цвет ..

НТН

...