Содержимое ContentPresenter по умолчанию для Silverlight

Почему это не work?

В generic.xaml для настраиваемого элемента управления:

В стиле, примененном к настраиваемому элементу управления ...

<Setter Property="ChromeContent">
  <Setter.Value>
    <Grid />
  </Setter.Value>
</Setter>

...

Позже, в шаблоне элемента управления. ..

<ContentPresenter Grid.Column="0" 
     x:Name="ChromeContentPresenter" 
     Content="{TemplateBinding ChromeContent}" />

Вот свойство зависимости для ChromeContent ...

public Object ChromeContent
{
  get { return (Object)GetValue(ChromeContentProperty); }
  set { SetValue(ChromeContentProperty, value); }
}
public static readonly DependencyProperty ChromeContentProperty =
    DependencyProperty.Register("ChromeContent", typeof(Object), 
    typeof(casPopup), null);

Как видите, оно принимает любой объект. Я попытался изменить его на сетку, но это не помогло.

Выдает следующую ошибку (из javascript): _Failed to assign to property 'System.Windows.Controls.ContentPresenter.Content'

Как ни странно, следующее будет работать нормально, если я удалю сетку из установщика и просто использую текст:

<Setter Property="ChromeContent" Value="DEFAULT" />

Кроме того, это также будет работать из метода OnApplyTemplate в классе управления:

  Grid g = new Grid();
  g.Width = 100;
  g.Height = 25;
  g.Background = new SolidColorBrush(Colors.LightGray);
  ChromeContent = g;

У меня проблемы время, чтобы понять, что мешает работе содержимого сетки по умолчанию, определенного в generic.xaml. Есть ли у кого-нибудь какие-либо знания по этому поводу?

Заранее большое спасибо за вашу помощь!

5
задан maulkye 28 January 2011 в 14:52
поделиться